Index: trunk/psLib/src/types/psMetadata.c
===================================================================
--- trunk/psLib/src/types/psMetadata.c	(revision 9715)
+++ trunk/psLib/src/types/psMetadata.c	(revision 9720)
@@ -12,6 +12,6 @@
  *  @author Ross Harman, MHPCC
  *
- *  @version $Revision: 1.143 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-10-20 00:17:21 $
+ *  @version $Revision: 1.144 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-10-24 01:15:47 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -417,5 +417,4 @@
     if (in == NULL) {
         psError(PS_ERR_BAD_PARAMETER_NULL, true, "psMetadataCopy: 'in' cannot be NULL");
-        psFree(out);
         return NULL;
     }
@@ -424,10 +423,10 @@
     if (in->list == NULL) {
         psError(PS_ERR_BAD_PARAMETER_NULL, true, "psMetadataCopy: 'in' has NULL list");
-        psFree(out);
-        return NULL;
-    }
-
+        return NULL;
+    }
+    bool outAlloced = false;
     if (out ==  NULL) {
         out = psMetadataAlloc();
+        outAlloced = true;
     }
     psMetadataIterator *iter = psMetadataIteratorAlloc(in, PS_LIST_HEAD, NULL);
@@ -450,5 +449,7 @@
             psFree(newItem);
             psFree(iter);
-            psFree(out);
+            if (outAlloced) {
+                psFree(out);
+            }
             return NULL;
         }
@@ -507,9 +508,9 @@
     psMetadataItem *existingEntry = NULL;
 
-    PS_ASSERT_PTR_NON_NULL(md,NULL);
-    PS_ASSERT_PTR_NON_NULL(md->hash,NULL);
-    PS_ASSERT_PTR_NON_NULL(md->list,NULL);
-    PS_ASSERT_PTR_NON_NULL(item,NULL);
-    PS_ASSERT_PTR_NON_NULL(item->name,NULL);
+    PS_ASSERT_PTR_NON_NULL(md,false);
+    PS_ASSERT_PTR_NON_NULL(md->hash,false);
+    PS_ASSERT_PTR_NON_NULL(md->list,false);
+    PS_ASSERT_PTR_NON_NULL(item,false);
+    PS_ASSERT_PTR_NON_NULL(item->name,false);
 
     mdTable = md->hash;
Index: trunk/psLib/src/types/psMetadataConfig.c
===================================================================
--- trunk/psLib/src/types/psMetadataConfig.c	(revision 9715)
+++ trunk/psLib/src/types/psMetadataConfig.c	(revision 9720)
@@ -1,3 +1,3 @@
-/** @file  psMetadataIO.c
+/** @file  psMetadataConfig.c
 *
 *  @brief Contains metadata input/output functions.
@@ -10,6 +10,6 @@
 *  @author Eric Van Alst, MHPCC
 *
-*  @version $Revision: 1.94 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-10-13 22:25:45 $
+*  @version $Revision: 1.95 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-10-24 01:15:47 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
Index: trunk/psLib/src/types/psMetadataConfig.h
===================================================================
--- trunk/psLib/src/types/psMetadataConfig.h	(revision 9715)
+++ trunk/psLib/src/types/psMetadataConfig.h	(revision 9720)
@@ -10,6 +10,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-09-12 04:18:56 $
+ *  @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-10-24 01:15:47 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -17,4 +17,6 @@
 #ifndef PS_METADATACONFIG_H
 #define PS_METADATACONFIG_H
+
+#include "psMetadata.h"
 
 /// @addtogroup Metadata
Index: trunk/psLib/test/types/tap_psMetadata_copying.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_copying.c	(revision 9715)
+++ trunk/psLib/test/types/tap_psMetadata_copying.c	(revision 9720)
@@ -23,5 +23,5 @@
 int main(void)
 {
-    plan_tests(35);
+    plan_tests(34);
 
     diag("psMetadataCopy and psMetadataItemCopy tests");
@@ -42,16 +42,20 @@
     psMetadataItem *outItem = NULL;
     psMetadataItem *inItem = NULL;
+    psMetadata *outTest = NULL;
 
     //Return NULL for NULL psMetadata input
     {
-        ok( psMetadataCopy(out, NULL) == NULL,
+        outTest = psMetadataCopy(out, NULL);
+        ok( outTest == NULL,
             "psMetadataCopy:  return NULL for NULL input metadata.");
     }
-    //Return NULL for NULL psMetadata input (with allocated out)
+    //Return allocated out for NULL psMetadata input (with allocated out)
     {
         out = psMetadataAlloc();
-        out = psMetadataCopy(out, NULL);
-        ok( out == NULL,
-            "psMetadataCopy:  return NULL for NULL input metadata.");
+        outTest = psMetadataCopy(out, NULL);
+        ok( outTest == NULL,
+            "psMetadataCopy:  return out for NULL input metadata.");
+        psFree(out);
+        out = NULL;
     }
     //Return NULL for attempt to copy item of unsupported data type
@@ -60,16 +64,16 @@
         psMetadataAddS32(in, PS_LIST_HEAD, "S32", 0, "", 1);
         psMetadataItem *notype = psMetadataGet(in, PS_LIST_HEAD);
-        notype->type = PS_DATA_METADATA_MULTI + 1000;
-        out = psMetadataCopy(out, in);
-        ok( out == NULL,
+        //        notype->type = PS_DATA_METADATA_MULTI + 1000;
+        notype->type = -1;
+        psFree(outTest);
+        outTest = NULL;
+        outTest = psMetadataCopy(out, in);
+        ok( outTest == NULL,
             "psMetadataCopy:  return NULL for metadata with item of bad type.");
         notype->type = PS_DATA_S32;
         psFree(in);
         in = NULL;
-        if (out != NULL)
-        {
-            psFree(out);
-            out = NULL;
-        }
+        psFree(out);
+        out = NULL;
     }
 
@@ -81,23 +85,33 @@
     }
     {
-        ok( psMetadataCopy(out, in) == NULL,
+        outTest = psMetadataCopy(out, in);
+        ok( outTest == NULL,
             "psMetadataCopy:  return NULL for NULL metadata input->list.");
     }
-    //Return NULL for NULL psMetadata input->list (with allocated out)
-    {
-        out = psMetadataAlloc();
-        out = psMetadataCopy(out, in);
-        ok( out == NULL,
-            "psMetadataCopy:  return NULL for NULL metadata input->list.");
-    }
+    /*    //Return NULL for NULL psMetadata input->list (with allocated out)
+        {
+            out = psMetadataAlloc();
+            out = psMetadataCopy(out, in);
+            ok( out == NULL,
+                "psMetadataCopy:  return NULL for NULL metadata input->list.");
+        }
+    */
     //Return valid (but empty) metadata for NULL out input and empty input metadata.
     in->list = psListAlloc(NULL);
     psFree(in);
     in = psMetadataAlloc();
-    out = psMetadataCopy(out, in);
+    if (out != NULL) {
+        psFree(out);
+        out = NULL;
+    }
+    outTest = psMetadataCopy(out, in);
     tempItem = psMetadataGet(in, PS_LIST_HEAD);
     {
-        ok( out != NULL && tempItem == NULL,
+        ok( outTest != NULL && tempItem == NULL,
             "psMetadataCopy:  return empty copy with no items for empty input metadata.");
+        psFree(out);
+        psFree(outTest);
+        out = NULL;
+        outTest = NULL;
     }
 
@@ -105,9 +119,11 @@
     psMetadataAddS32(in, PS_LIST_HEAD, "S32", 0, "", 1);
     psMetadataAddS32(in, PS_LIST_TAIL, "S32", PS_META_DUPLICATE_OK, "", 1);
-    out = psMetadataCopy(out, in);
-    tempItem = psMetadataGet(out, PS_LIST_HEAD);
+    outTest = psMetadataCopy(out, in);
+    tempItem = psMetadataGet(outTest, PS_LIST_HEAD);
     {
         ok( tempItem->type == PS_DATA_S32 && tempItem->data.S32 == 1,
             "psMetadataCopy:  return valid copy for a PS_DATA_METADATA_MULTI entry.");
+        psFree(outTest);
+        outTest = NULL;
     }
 
@@ -121,6 +137,6 @@
     in = psMetadataAlloc();
     psMetadataAddS32(in, PS_LIST_HEAD, "S32", 0, "", 666);
-    out = psMetadataCopy(out, in);
-    outItem = psMetadataGet(out, PS_LIST_HEAD);
+    outTest = psMetadataCopy(out, in);
+    outItem = psMetadataGet(outTest, PS_LIST_HEAD);
     inItem = psMetadataGet(in, PS_LIST_HEAD);
     {
@@ -129,4 +145,5 @@
             "psMetadataCopy:  return valid copy of metadata with 1 S32 entry.");
     }
+    psFree(outTest);
     //Check for Memory Leaks
     {
