pspp-dump-sav: Fix memory leaks.
[pspp] / src / data / pc+-file-reader.c
index a608d2500c913f685a0467a4abbfb401d2a437da..d9904ef430ea289c798b7d05fc6a31fb9e0ba486 100644 (file)
@@ -221,13 +221,13 @@ pcp_open (struct file_handle *fh)
   /* Fetch file size. */
   if (fstat (fileno (r->file), &s))
     {
-      pcp_error (ME, 0, _("%s: stat failed (%s)."),
+      pcp_error (r, 0, _("%s: stat failed (%s)."),
                  fh_get_file_name (r->fh), strerror (errno));
       goto error;
     }
   if (s.st_size > UINT_MAX)
     {
-      pcp_error (ME, 0, _("%s: file too large."), fh_get_file_name (r->fh));
+      pcp_error (r, 0, _("%s: file too large."), fh_get_file_name (r->fh));
       goto error;
     }
   r->file_size = s.st_size;
@@ -461,7 +461,7 @@ pcp_decode (struct any_reader *r_, const char *encoding,
 
 error:
   pcp_close (&r->any_reader);
-  dict_destroy (dict);
+  dict_unref (dict);
   *dictp = NULL;
   return NULL;
 }
@@ -1152,9 +1152,7 @@ static void
 pcp_msg (struct pcp_reader *r, off_t offset,
          int class, const char *format, va_list args)
 {
-  struct msg m;
   struct string text;
-
   ds_init_empty (&text);
   if (offset >= 0)
     ds_put_format (&text, _("`%s' near offset 0x%llx: "),
@@ -1163,15 +1161,11 @@ pcp_msg (struct pcp_reader *r, off_t offset,
     ds_put_format (&text, _("`%s': "), fh_get_file_name (r->fh));
   ds_put_vformat (&text, format, args);
 
-  m.category = msg_class_to_category (class);
-  m.severity = msg_class_to_severity (class);
-  m.file_name = NULL;
-  m.first_line = 0;
-  m.last_line = 0;
-  m.first_column = 0;
-  m.last_column = 0;
-  m.text = ds_cstr (&text);
-
+  struct msg m = {
+    .category = msg_class_to_category (class),
+    .severity = msg_class_to_severity (class),
+    .text = ds_cstr (&text),
+  };
   msg_emit (&m);
 }