Fix memory leak in MRSETS
[pspp] / src / data / sys-file-reader.c
index 03234c2d66166f60138cd67fa22ca7b7291e581e..b92f42a96c6e159e13bb8c2f0d8a3cf419798923 100644 (file)
@@ -42,7 +42,6 @@
 #include "libpspp/array.h"
 #include "libpspp/assertion.h"
 #include "libpspp/compiler.h"
-#include "libpspp/hash.h"
 #include "libpspp/i18n.h"
 #include "libpspp/message.h"
 #include "libpspp/misc.h"
@@ -1173,6 +1172,7 @@ read_mrsets (struct sfm_reader *r, size_t size, size_t count,
 
       dict_add_mrset (dict, mrset);
       mrset = NULL;
+      stringi_set_destroy (&var_names);
     }
   mrset_destroy (mrset);
   close_text_record (r, text);
@@ -1679,7 +1679,7 @@ read_long_string_value_labels (struct sfm_reader *r,
                  first 255 bytes.  The maximum documented length
                  of a label is 120 bytes so this is more than
                  generous. */
-              skip_bytes (r, sizeof label - (label_length + 1));
+              skip_bytes (r, (label_length + 1) - sizeof label);
             }
 
           if (!skip && !var_add_value_label (v, &value, label))