aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-09-02 19:23:35 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-09-02 19:23:35 -0400
commita4454df4b93e2e2d071fe9e364318e3615fd7a98 (patch)
treed20fb9ce312bf278bc5f043322e0a52b5da006a6
parentb0a8404bd7068c02f274978263fec00b8538d814 (diff)
Bugfix int parsing
-rw-r--r--builtins/text.c8
-rw-r--r--test/extern.tm6
2 files changed, 10 insertions, 4 deletions
diff --git a/builtins/text.c b/builtins/text.c
index 800c5558..32e9609b 100644
--- a/builtins/text.c
+++ b/builtins/text.c
@@ -442,10 +442,16 @@ static void u8_buf_append(Text_t text, char **buf, size_t *capacity, int64_t *i)
public const char *Text$as_c_string(Text_t text)
{
- size_t capacity = text.length;
+ size_t capacity = text.length + 1;
char *buf = GC_MALLOC_ATOMIC(capacity);
int64_t i = 0;
u8_buf_append(text, &buf, &capacity, &i);
+
+ if (i + 1 > (int64_t)capacity) {
+ capacity = i + 1;
+ buf = GC_REALLOC(buf, capacity);
+ }
+ buf[i] = '\0';
return buf;
}
diff --git a/test/extern.tm b/test/extern.tm
index da3b1820..4823b21f 100644
--- a/test/extern.tm
+++ b/test/extern.tm
@@ -1,5 +1,5 @@
-extern CORD_cat:func(a:Text, b:Text)->Text
+extern sqrt:func(n:Num)->Num
func main():
- >> CORD_cat("hello ", "world")
- = "hello world"
+ >> sqrt(4)
+ = 2