summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-06-13 04:08:54 +0200
committerkdx <kikoodx@paranoici.org>2023-06-13 04:08:54 +0200
commitbef68b681f0af54061858a6689057850b390d79c (patch)
tree7e3b7be4594d43e9143b2de73cc42d7d5c961acb
parent7648643b7f25b7752aacef9e758cf28372529ab4 (diff)
downloadgolem-bef68b681f0af54061858a6689057850b390d79c.tar.gz
fix string misinterpretation
-rw-r--r--src/main.c4
-rwxr-xr-xtesting.sh1
2 files changed, 3 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index de84ea4..01ade54 100644
--- a/src/main.c
+++ b/src/main.c
@@ -134,7 +134,7 @@ tokenize(char *p)
char *end = strchr(p + 1, '"');
if (end == NULL)
error("unclosed double quotes", 0);
- cur = cur->next = new_token(TOK_STRING, p + 1, end);
+ cur = cur->next = new_token(TOK_STRING, p, end + 1);
p = end + 1;
continue;
}
@@ -1141,7 +1141,7 @@ codegen(Node *node)
for (int i = 0; i < strings_size; i++) {
printf("@__str_%x\n", strings_size - i - 1);
- for (int k = 0; k < strings->lhs->len; k++)
+ for (int k = 1; k < strings->lhs->len - 1; k++)
printf("\t%04x\n", (unsigned)strings->lhs->loc[k]);
printf("\t0000\n");
strings = strings->next;
diff --git a/testing.sh b/testing.sh
index b34667e..3539b20 100755
--- a/testing.sh
+++ b/testing.sh
@@ -54,5 +54,6 @@ test "$1" "main() 0; //ayayayayayayaya comment"
test "$1" "main() return;"
test "$1" "main() { local a; a = 5; dbg a; a++; dbg a; }"
test "$1" "main() { local a; a = 5; dbg a; a--; dbg a; }"
+test "$1" "main() { wrt [\"(\"]; wrt '\n'; }"
exit
rm -f build/tmp.*