pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] pspp/src/data procedure.c ChangeLog


From: Ben Pfaff
Subject: [Pspp-cvs] pspp/src/data procedure.c ChangeLog
Date: Sun, 07 May 2006 05:46:26 +0000

CVSROOT:        /cvsroot/pspp
Module name:    pspp
Branch:         
Changes by:     Ben Pfaff <address@hidden>      06/05/07 05:46:26

Modified files:
        src/data       : procedure.c ChangeLog 

Log message:
        Simplify multipass_procedure().
        Fix memory leak.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/data/procedure.c.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/data/ChangeLog.diff?tr1=1.43&tr2=1.44&r1=text&r2=text

Patches:
Index: pspp/src/data/ChangeLog
diff -u pspp/src/data/ChangeLog:1.43 pspp/src/data/ChangeLog:1.44
--- pspp/src/data/ChangeLog:1.43        Sun May  7 05:44:18 2006
+++ pspp/src/data/ChangeLog     Sun May  7 05:46:26 2006
@@ -1,3 +1,18 @@
+Sat May  6 22:45:55 2006  Ben Pfaff  <address@hidden>
+
+       * procedure.c (proc_done): Destroy default_dict, to fix memory
+       leak.
+
+Sat May  6 22:44:44 2006  Ben Pfaff  <address@hidden>
+
+       Simplify procedure_with_splits().
+       
+       * procedure.c (struct split_aux_data): Removed case_count member.
+       (procedure_with_splits) Don't initialize case_count.
+       (split_procedure_case_func) Check whether prev_case is null
+       instead of case_count.
+       (split_procedure_end_func) Ditto.
+
 Sat May  6 22:42:23 2006  Ben Pfaff  <address@hidden>
 
        * case.c (case_move): Do nothing if dst and src are the same
Index: pspp/src/data/procedure.c
diff -u pspp/src/data/procedure.c:1.8 pspp/src/data/procedure.c:1.9
--- pspp/src/data/procedure.c:1.8       Sat May  6 22:37:30 2006
+++ pspp/src/data/procedure.c   Sun May  7 05:46:26 2006
@@ -458,7 +458,6 @@
 /* Represents auxiliary data for handling SPLIT FILE. */
 struct split_aux_data 
   {
-    size_t case_count;          /* Number of cases so far. */
     struct ccase prev_case;     /* Data in previous case. */
 
     /* Callback functions. */
@@ -498,7 +497,6 @@
   struct split_aux_data split_aux;
   bool ok;
 
-  split_aux.case_count = 0;
   case_nullify (&split_aux.prev_case);
   split_aux.begin_func = begin_func;
   split_aux.proc_func = proc_func;
@@ -520,10 +518,10 @@
   struct split_aux_data *split_aux = split_aux_;
 
   /* Start a new series if needed. */
-  if (split_aux->case_count == 0
+  if (case_is_null (&split_aux->prev_case)
       || !equal_splits (c, &split_aux->prev_case))
     {
-      if (split_aux->case_count > 0 && split_aux->end_func != NULL)
+      if (!case_is_null (&split_aux->prev_case) && split_aux->end_func != NULL)
         split_aux->end_func (split_aux->func_aux);
 
       case_destroy (&split_aux->prev_case);
@@ -533,7 +531,6 @@
        split_aux->begin_func (&split_aux->prev_case, split_aux->func_aux);
     }
 
-  split_aux->case_count++;
   return (split_aux->proc_func == NULL
           || split_aux->proc_func (c, split_aux->func_aux));
 }
@@ -544,7 +541,7 @@
 {
   struct split_aux_data *split_aux = split_aux_;
 
-  if (split_aux->case_count > 0 && split_aux->end_func != NULL)
+  if (!case_is_null (&split_aux->prev_case) && split_aux->end_func != NULL)
     split_aux->end_func (split_aux->func_aux);
   return true;
 }
@@ -802,6 +799,7 @@
 proc_done (void)
 {
   discard_variables ();
+  dict_destroy (default_dict);
 }
 
 /* Sets SINK as the destination for procedure output from the




reply via email to

[Prev in Thread] Current Thread [Next in Thread]