From ac392803fa014bf0577909554e2a6143598a8979 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 14 Jan 2022 22:08:52 -0800 Subject: [PATCH] Fix parsing totals. --- src/language/stats/ctables.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) 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; } -- 2.30.2