summaryrefslogtreecommitdiff
path: root/src/parser/parser_stmt.c
diff options
context:
space:
mode:
authorZuhaitz <zuhaitz.zechhub@gmail.com>2026-01-24 16:16:55 +0000
committerGitHub <noreply@github.com>2026-01-24 16:16:55 +0000
commitec2e255346eb3b5aba3e4ead18d1d5053995e2ea (patch)
tree34bc4de609c1b8379918c8f966d5fc4dffbc5d35 /src/parser/parser_stmt.c
parent08558d8cdab7598c4a2e077bd665b49bfee18a79 (diff)
parentf3d2544b18fe8267edaba97474033782f7da3f40 (diff)
Merge pull request #108 from vitalyster/tmpfile
open_memstream -> tmpfile
Diffstat (limited to 'src/parser/parser_stmt.c')
-rw-r--r--src/parser/parser_stmt.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/parser/parser_stmt.c b/src/parser/parser_stmt.c
index 325fa1c..2e3d6e2 100644
--- a/src/parser/parser_stmt.c
+++ b/src/parser/parser_stmt.c
@@ -1413,10 +1413,15 @@ char *process_printf_sugar(ParserContext *ctx, const char *content, int newline,
{
char *inner_c = NULL;
size_t len = 0;
- FILE *ms = open_memstream(&inner_c, &len);
+ FILE *ms = tmpfile();
if (ms)
{
codegen_expression(ctx, expr_node, ms);
+ len = ftell(ms);
+ fseek(ms, 0, SEEK_SET);
+ inner_c = xmalloc(len + 1);
+ fread(inner_c, 1, len, ms);
+ inner_c[len] = 0;
fclose(ms);
}
@@ -1443,10 +1448,15 @@ char *process_printf_sugar(ParserContext *ctx, const char *content, int newline,
{
char *buf = NULL;
size_t len = 0;
- FILE *ms = open_memstream(&buf, &len);
+ FILE *ms = tmpfile();
if (ms)
{
codegen_expression(ctx, expr_node, ms);
+ len = ftell(ms);
+ fseek(ms, 0, SEEK_SET);
+ buf = xmalloc(len + 1);
+ fread(buf, 1, len, ms);
+ buf[len] = 0;
fclose(ms);
rw_expr = buf;
used_codegen = 1;