all repos — hex @ bfa429736448d2d533116a407dbee9e4f9f8e7b2

A tiny, minimalist, slightly-esoteric concatenative programming lannguage.

Refactor hex_pop to copy item before returning, ensuring proper ownership and preventing memory issues.
h3rald h3rald@h3rald.com
Thu, 11 Sep 2025 13:37:51 +0200
commit

bfa429736448d2d533116a407dbee9e4f9f8e7b2

parent

5c6360b1ba02ecc76a6f5a346b5e5b4532dea62b

2 files changed, 5 insertions(+), 2 deletions(-)

jump to
M src/hex.csrc/hex.c

@@ -704,10 +704,11 @@ }

return item; } - hex_item_t *item = ctx->stack->entries[ctx->stack->top]; + hex_item_t *orig_item = ctx->stack->entries[ctx->stack->top]; ctx->stack->entries[ctx->stack->top] = NULL; // Clear the stack reference ctx->stack->top--; + hex_item_t *item = hex_copy_item(ctx, orig_item); hex_debug_item(ctx, " POP", item); return item; }
M src/stack.csrc/stack.c

@@ -271,10 +271,12 @@ }

return item; } - hex_item_t *item = ctx->stack->entries[ctx->stack->top]; + hex_item_t *orig_item = ctx->stack->entries[ctx->stack->top]; ctx->stack->entries[ctx->stack->top] = NULL; // Clear the stack reference ctx->stack->top--; + // Copying the item to avoid ownership issues when freeing + hex_item_t *item = hex_copy_item(ctx, orig_item); hex_debug_item(ctx, " POP", item); return item; }