diff --git a/src/parser.c b/src/parser.c index 7343d844..3b872cc5 100644 --- a/src/parser.c +++ b/src/parser.c @@ -3029,12 +3029,12 @@ chkNoDupeDotInParserDefs(ln_ctx ctx, struct json_object *parsers) if(json_object_get_type(parsers) == json_type_array) { const int maxparsers = json_object_array_length(parsers); for(int i = 0 ; i < maxparsers ; ++i) { - ++nParsers; struct json_object *const parser = json_object_array_get_idx(parsers, i); struct json_object *fname; json_object_object_get_ex(parser, "name", &fname); if(fname != NULL) { + ++nParsers; if(!strcmp(json_object_get_string(fname), ".")) ++nDots; } diff --git a/tests/repeat_name_dot.sh b/tests/repeat_name_dot.sh new file mode 100755 index 00000000..3470a50d --- /dev/null +++ b/tests/repeat_name_dot.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# added 2023-02-14 by Kevin Guillemot +# This file is part of the liblognorm project, released under ASL 2.0 + +. $srcdir/exec.sh + +test_def $0 "Repeat with one parser named dot" +add_rule 'version=2' +add_rule 'rule=:a %{"name":"numbers", "type":"repeat", + "parser":[ + {"type":"number"}, + {"type":"literal", "text":":"}, + {"name":".", "type":"number"} + ], + "while":[ + {"type":"literal", "text":", "} + ] + }% b %w:word% +' +execute 'a 1:2, 3:4, 5:6, 7:8 b test' +assert_output_json_eq '{ "w": "test", "numbers": [ "2", "4", "6", "8" ] }' + +cleanup_tmp_files