message: Make msg_emit() take full ownership of its argument.
[pspp] / src / data / sys-file-reader.c
index bc5ff9eeb2519fbe811ed720790ba5525ede26fb..f11480ac8f76c6bc2a3c72ac6a33519bbe971e48 100644 (file)
@@ -3244,12 +3244,13 @@ sys_msg (struct sfm_reader *r, off_t offset,
     ds_put_format (&text, _("`%s': "), fh_get_file_name (r->fh));
   ds_put_vformat (&text, format, args);
 
-  struct msg m = {
+  struct msg *m = xmalloc (sizeof *m);
+  *m = (struct msg) {
     .category = msg_class_to_category (class),
     .severity = msg_class_to_severity (class),
-    .text = ds_cstr (&text),
+    .text = ds_steal_cstr (&text),
   };
-  msg_emit (&m);
+  msg_emit (m);
 }
 
 /* Displays a warning for offset OFFSET in the file. */