diff options
| author | SAJJA EASWAR <eshwarsajja20@gmail.com> | 2026-01-25 22:59:36 +0530 |
|---|---|---|
| committer | SAJJA EASWAR <eshwarsajja20@gmail.com> | 2026-01-25 22:59:36 +0530 |
| commit | ebc8b94baa6bc694cb4829e2eb2934a1f17fa6a1 (patch) | |
| tree | 71b952ad455bf17d5bdea01472f0e2297f25eabe /src/parser/parser_utils.c | |
| parent | 863118c95caac0d69a35f6ae4d2e83844734a8a1 (diff) | |
| parent | 489336b2101bf16edeec7bfc4379408eb19b936e (diff) | |
Merge branch 'main' into pr-109
Diffstat (limited to 'src/parser/parser_utils.c')
| -rw-r--r-- | src/parser/parser_utils.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/parser/parser_utils.c b/src/parser/parser_utils.c index ae5adcd..eec8faa 100644 --- a/src/parser/parser_utils.c +++ b/src/parser/parser_utils.c @@ -1624,7 +1624,7 @@ ASTNode *copy_ast_replacing(ASTNode *n, const char *p, const char *c, const char new_node->field.type = replace_type_str(n->field.type, p, c, os, ns); break; case NODE_EXPR_LITERAL: - if (n->literal.type_kind == 2) + if (n->literal.type_kind == LITERAL_STRING) { new_node->literal.string_val = xstrdup(n->literal.string_val); } @@ -2236,10 +2236,15 @@ char *process_fstring(ParserContext *ctx, const char *content, char ***used_syms // Codegen expression to temporary buffer char *code_buffer = NULL; size_t code_len = 0; - FILE *mem_stream = open_memstream(&code_buffer, &code_len); + FILE *mem_stream = tmpfile(); if (mem_stream) { codegen_expression(ctx, expr_node, mem_stream); + code_len = ftell(mem_stream); + code_buffer = xmalloc(code_len + 1); + fseek(mem_stream, 0, SEEK_SET); + fread(code_buffer, 1, code_len, mem_stream); + code_buffer[code_len] = 0; fclose(mem_stream); } |
