From a56f7b45203d14adbcd0687e7f9eb96d26d45aa2 Mon Sep 17 00:00:00 2001 From: Raghuram Subramani Date: Fri, 11 Jul 2025 11:43:41 +0530 Subject: lexer: check contentfor before content Since content is a substring of contentfor, it gets wrongly recognized. --- src/lexer.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/lexer.c') diff --git a/src/lexer.c b/src/lexer.c index a967c25..2076d20 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -123,18 +123,6 @@ found_start: break; } - directive->operands = operand; - } else if (strncmp(buffer + n, "content ", strlen("content")) == 0) { - directive->type = CONTENT; - - char *operand = NULL; - for (size_t i = n + strlen("content"); i < match->length - n; i++) - if (isalnum(buffer[i])) { - sscanf(buffer + i, "%ms\"", &operand); - operand[strlen(operand) - 1] = '\0'; - break; - } - directive->operands = operand; } else if (strncmp(buffer + n, "endcontent", strlen("endcontent")) == 0) { directive->type = ENDCONTENT; @@ -194,6 +182,18 @@ found_start: free(new_match); directive->operands = operands; + } else if (strncmp(buffer + n, "content ", strlen("content")) == 0) { + directive->type = CONTENT; + + char *operand = NULL; + for (size_t i = n + strlen("content"); i < match->length - n; i++) + if (isalnum(buffer[i])) { + sscanf(buffer + i, "%ms\"", &operand); + operand[strlen(operand) - 1] = '\0'; + break; + } + + directive->operands = operand; } else { free(directive); return NULL; -- cgit v1.2.3