X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsys-file-reader.c;h=af8f1b457678e60c5a927969e737d39cc169c4f9;hb=c8765cd7639e64d5dcd8f494aee23babb3b3f179;hp=1b2d6c2131b996a8e8abf1dc18b10fc259f77187;hpb=98f90d5547c9a69591cd24eb46f012ee96b2fa30;p=pspp diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index 1b2d6c2131..af8f1b4576 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -891,7 +891,7 @@ sfm_decode (struct any_reader *r_, const char *encoding, error: sfm_close (r_); - dict_destroy (dict); + dict_unref (dict); *dictp = NULL; return NULL; } @@ -1544,22 +1544,9 @@ parse_format_spec (struct sfm_reader *r, off_t pos, unsigned int format, int *n_warnings) { const int max_warnings = 8; - uint8_t raw_type = format >> 16; - uint8_t w = format >> 8; - uint8_t d = format; struct fmt_spec f; - bool ok; - - f.w = w; - f.d = d; - msg_disable (); - ok = (fmt_from_io (raw_type, &f.type) - && fmt_check_output (&f) - && fmt_check_width_compat (&f, var_get_width (v))); - msg_enable (); - - if (ok) + if (fmt_from_u32 (format, var_get_width (v), false, &f)) { if (which == PRINT_FORMAT) var_set_print_format (v, &f); @@ -1762,7 +1749,12 @@ parse_mrsets (struct sfm_reader *r, const struct sfm_extension_record *record, } number = text_get_token (text, ss_cstr (" "), NULL); - if (!strcmp (number, "11")) + if (!number) + sys_warn (r, record->pos, + _("Missing label source value " + "following `E' at offset %zu in MRSETS record."), + text_pos (text)); + else if (!strcmp (number, "11")) mrset->label_from_var_label = true; else if (strcmp (number, "1")) sys_warn (r, record->pos, @@ -3188,7 +3180,6 @@ static void sys_msg (struct sfm_reader *r, off_t offset, int class, const char *format, va_list args) { - struct msg m; struct string text; ds_init_empty (&text); @@ -3199,15 +3190,11 @@ 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); - 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); }