From: Ben Pfaff <blp@gnu.org>
Date: Sat, 14 Oct 2006 23:23:17 +0000 (+0000)
Subject: Fix memory leak in test_casereader_clone().
X-Git-Tag: sav-api~1740
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9956f167d1db0f91ed35f9fb28b711586a416d42;p=pspp

Fix memory leak in test_casereader_clone().
---

diff --git a/src/language/tests/ChangeLog b/src/language/tests/ChangeLog
index 80c27c0d98..605b8cc5ed 100644
--- a/src/language/tests/ChangeLog
+++ b/src/language/tests/ChangeLog
@@ -1,3 +1,8 @@
+Sat Oct 14 16:21:45 2006  Ben Pfaff  <blp@gnu.org>
+
+	* casefile-test.c: (test_casereader_clone) Free cases that we
+	read, to avoid memory leak.
+
 Tue Jun  6 18:48:00 2006  Ben Pfaff  <blp@gnu.org>
 
 	* casefile-test.c: (test_casefile) Test the new casereader_seek()
diff --git a/src/language/tests/casefile-test.c b/src/language/tests/casefile-test.c
index a1927ddb98..30ffdd2b0f 100644
--- a/src/language/tests/casefile-test.c
+++ b/src/language/tests/casefile-test.c
@@ -232,14 +232,17 @@ test_casereader_clone (struct casereader *reader1, size_t case_cnt)
 
   /* Read a 3rd of the cases */
   for ( i = 0 ; i < case_cnt / 3 ; ++i ) 
-    casereader_read (reader1, &c1);
+    {
+      casereader_read (reader1, &c1);
+      case_destroy (&c1);
+    }
 
   clone = casereader_clone (reader1);
 
   /* Copy all the cases into a new file */
   while( casereader_read (reader1, &c1))
     { 
-      casefile_append (newfile, &c1);
+      casefile_append_xfer (newfile, &c1);
       cases ++;
     }
 
@@ -254,13 +257,19 @@ test_casereader_clone (struct casereader *reader1, size_t case_cnt)
       cases --;
 
       if ( ! casereader_read_xfer (newreader, &c2) ) 
-	break;
+        {
+          case_destroy (&c1);
+          break; 
+        }
       
       v1 = case_data_all (&c1) ;
       v2 = case_data_all (&c2) ;
 
       if ( 0 != memcmp (v1, v2, value_cnt * MAX_SHORT_STRING))
 	fail_test ("Cloned reader read different value at case %ld", cases);
+
+      case_destroy (&c1);
+      case_destroy (&c2);
     }
 
   if ( cases > 0 )