Rewrite expression code.
[pspp-builds.git] / src / sfm-read.c
index 9c0cc6d3115b1b37cc411471856e3f0ac35be844..d48291224ab0f4e0226da8082735640daa1b1e6f 100644 (file)
@@ -122,26 +122,16 @@ corrupt_msg (int class, const char *format,...)
 static void
 corrupt_msg (int class, const char *format,...)
 {
-  char buf[1024];
-  
-  {
-    va_list args;
+  struct error e;
+  va_list args;
 
-    va_start (args, format);
-    vsnprintf (buf, 1024, format, args);
-    va_end (args);
-  }
-  
-  {
-    struct error e;
+  e.class = class;
+  getl_location (&e.where.filename, &e.where.line_number);
+  e.title = _("corrupt system file: ");
 
-    e.class = class;
-    getl_location (&e.where.filename, &e.where.line_number);
-    e.title = _("corrupt system file: ");
-    e.text = buf;
-
-    err_vmsg (&e);
-  }
+  va_start (args, format);
+  err_vmsg (&e, format, args);
+  va_end (args);
 }
 
 /* Closes a system file after we're done with it. */
@@ -153,9 +143,13 @@ sfm_close_reader (struct sfm_reader *r)
 
   if (r->fh != NULL)
     fh_close (r->fh, "system file", "rs");
-  if (fn_close (handle_get_filename (r->fh), r->file) == EOF)
-    msg (ME, _("%s: Closing system file: %s."),
-         handle_get_filename (r->fh), strerror (errno));
+  
+  if ( r->file ) {
+    if (fn_close (handle_get_filename (r->fh), r->file) == EOF)
+      msg (ME, _("%s: Closing system file: %s."),
+          handle_get_filename (r->fh), strerror (errno));
+    r->file = NULL;
+  }
   free (r->vars);
   free (r->buf);
   free (r);