Index: trunk/psLib/test/types/tap_psMetadata_copying.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_copying.c	(revision 9714)
+++ 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
     {
