aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-27 21:24:37 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-27 21:24:37 +0530
commit73d7dcf45d79cb91cef6690559364fcc0cbb1815 (patch)
tree41429129b32f9d9521ffbfddd23aa53c45554886
parent82699f835535ae58f9ad7eb088c38df2a787a07d (diff)
lexer: fix infinite loop on finding eachdo
-rw-r--r--src/lexer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lexer.c b/src/lexer.c
index eefeddd..3728147 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -188,9 +188,10 @@ lexer_handle_eachdo(directive_t *directive,
buffer += match->length;
key_match_t *new_match;
+ size_t skip = 0;
while (true) {
- new_match = find_next_key(buffer, 0);
+ new_match = find_next_key(buffer, skip);
if (new_match == NULL) {
printf("Cannot find endeachdo\n");
free(new_match);
@@ -217,6 +218,8 @@ lexer_handle_eachdo(directive_t *directive,
free(new_directive);
free(new_match);
+
+ skip++;
}
operands->content = strndup(buffer, new_match->offset);