summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-18 13:36:42 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-18 13:36:42 +0330
commite26b306f5413a3fa7cb2e516b8662b32d7933db7 (patch)
tree4d8d0c61bf9b8faefd4a5fe5041a20e25ebecac8 /src
parent3e51ec689bec7f50ebe5b9b13b1eb7b7c3688128 (diff)
fix string length bug
Diffstat (limited to 'src')
-rw-r--r--src/compiler/parser.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/parser.c b/src/compiler/parser.c
index 6f3e956..f5009e5 100644
--- a/src/compiler/parser.c
+++ b/src/compiler/parser.c
@@ -1121,7 +1121,7 @@ ParserNode *parserString(LexerNode *node, ParserNode *parent) {
metadata->begin = metadata->end = a404m_malloc(
sizeof(*metadata->begin) * (node->str_end - node->str_begin));
- for (char *iter = node->str_begin + 1; iter < node->str_end - 2; ++iter) {
+ for (char *iter = node->str_begin + 1; iter < node->str_end - 1; ++iter) {
if (*iter == '\\') {
iter += 1;
bool success;
@@ -1136,6 +1136,10 @@ ParserNode *parserString(LexerNode *node, ParserNode *parent) {
metadata->end += 1;
}
+ size_t size = metadata->end - metadata->begin;
+ metadata->begin = a404m_realloc(metadata->begin, size * (*metadata->begin));
+ metadata->end = metadata->begin + size;
+
return node->parserNode =
newParserNode(PARSER_TOKEN_VALUE_STRING, node->str_begin,
node->str_end, metadata, parent);