From: Ben Pfaff Date: Sat, 15 Jan 2022 06:08:52 +0000 (-0800) Subject: Fix parsing totals. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=ac392803fa014bf0577909554e2a6143598a8979 Fix parsing totals. --- diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index a6de212483..99efc09c5a 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -901,7 +901,7 @@ ctables_axis_parse_postfix (struct ctables_axis_parse_ctx *ctx) if (!sub || !lex_match (ctx->lexer, T_LBRACK)) return sub; - bool totals = false; + enum ctables_summary_variant sv = CSV_CELL; for (;;) { int start_ofs = lex_ofs (ctx->lexer); @@ -950,23 +950,20 @@ ctables_axis_parse_postfix (struct ctables_axis_parse_ctx *ctx) struct msg_location *loc = lex_ofs_location (ctx->lexer, start_ofs, lex_ofs (ctx->lexer) - 1); - add_summary_spec (sub, function, percentile, label, formatp, loc, - totals); + add_summary_spec (sub, function, percentile, label, formatp, loc, sv); free (label); msg_location_destroy (loc); - if (lex_match (ctx->lexer, T_COMMA)) + lex_match (ctx->lexer, T_COMMA); + if (sv == CSV_CELL && lex_match_id (ctx->lexer, "TOTALS")) { - if (!totals && lex_match_id (ctx->lexer, "TOTALS")) - { - if (!lex_force_match (ctx->lexer, T_LBRACK)) - goto error; - totals = true; - } + if (!lex_force_match (ctx->lexer, T_LBRACK)) + goto error; + sv = CSV_TOTAL; } else if (lex_force_match (ctx->lexer, T_RBRACK)) { - if (totals && !lex_force_match (ctx->lexer, T_RBRACK)) + if (sv == CSV_TOTAL && !lex_force_match (ctx->lexer, T_RBRACK)) goto error; return sub; }