From f518002b6673e3bcc030c903378d5d75f64697ea Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 29 Jul 2017 16:16:30 -0700 Subject: [PATCH] sys-file-reader: Tolerate nominal case size of 0 without warning. The software at https://github.com/WizardMac/ReadStat seems to always write 0, so there's not much value in warning. --- doc/dev/system-file-format.texi | 4 ++-- src/data/sys-file-reader.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/dev/system-file-format.texi b/doc/dev/system-file-format.texi index fb131f5274..e52b957116 100644 --- a/doc/dev/system-file-format.texi +++ b/doc/dev/system-file-format.texi @@ -232,8 +232,8 @@ file's integer endianness (@pxref{System File Format}). Number of data elements per case. This is the number of variables, except that long string variables add extra data elements (one for every 8 characters after the first 8). However, string variables do not -contribute to this value beyond the first 255 bytes. Further, system -files written by some systems set this value to -1. In general, it is +contribute to this value beyond the first 255 bytes. Further, some +software always writes -1 or 0 in this field. In general, it is unsafe for systems reading system files to rely upon this value. @item int32 compression; diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index 54788deb6e..5e5dc8b144 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -861,7 +861,7 @@ sfm_decode (struct any_reader *r_, const char *encoding, amount that the header claims. SPSS version 13 gets this wrong when very long strings are involved, so don't warn in that case. */ - if (r->header.nominal_case_size != -1 + if (r->header.nominal_case_size > 0 && r->header.nominal_case_size != r->n_vars && r->info.version_major != 13) sys_warn (r, -1, _("File header claims %d variable positions but " -- 2.30.2