From d7d4630ca41a3e77987798a17e822a3b3b689165 Mon Sep 17 00:00:00 2001 From: anon Date: Fri, 5 Jul 2024 09:05:51 +0200 Subject: [PATCH] cleaned leakage --- Makefile | 2 +- source/eaxhla.l | 16 +++++----------- source/eaxhla.y | 5 +++-- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 29e9f47..66442a5 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ endif ifeq ($(SAN), 1) CFLAGS += -fsanitize=address,undefined else - WRAP := valgrind --track-origins=yes --leak-check=full --show-leak-kinds=all + WRAP := valgrind --show-error-list=yes --track-origins=yes --leak-check=full --show-leak-kinds=all endif CFLAGS += -Wall -Wextra -Wpedantic diff --git a/source/eaxhla.l b/source/eaxhla.l index 3c3570b..14b234a 100644 --- a/source/eaxhla.l +++ b/source/eaxhla.l @@ -100,17 +100,16 @@ u64{wsnl}+ { return U64; } BEGIN INITIAL; yylval.strval = strdup(string_literal_buffer); puts(string_literal_buffer); - return LITERAL; + return STRING_LITERAL; } . { - string_litral_buffer_size += yyleng; - if (string_litral_buffer_size > string_litral_buffer_capacity) { + if (string_litral_buffer_size + yyleng > string_litral_buffer_capacity) { string_litral_buffer_capacity *= 2; void * ignore = realloc(string_literal_buffer, string_litral_buffer_capacity); (void)ignore; } memcpy(string_literal_buffer + string_litral_buffer_size, yytext, yyleng); - puts(string_literal_buffer); + string_litral_buffer_size += yyleng; } } @@ -155,16 +154,11 @@ void set_state(int state) { } void yyfree_leftovers(void) { - // XXX: wip - for (size_t i = 0; i < yy_buffer_stack_max; i++) { - free(yy_buffer_stack[i]); - } - - //yy_delete_buffer(b); - if (yyin) { fclose(yyin); } + yylex_destroy(); + free(string_literal_buffer); } diff --git a/source/eaxhla.y b/source/eaxhla.y index 0b36c6a..c224b71 100644 --- a/source/eaxhla.y +++ b/source/eaxhla.y @@ -138,9 +138,9 @@ code: %empty | BREAK code | TXOR register register code { /* assemble_xor(size_64b, type_register_register, $2, $3); */ } | TXOR register immediate code { /* assemble_xor(size_64b, type_register_register, $2, $3); */ } - | TXOR IDENTIFIER register code { /* assemble_xor(size_64b, type_register_register, $2, $3); */ } + | TXOR IDENTIFIER register code { /* assemble_xor(size_64b, type_register_register, $2, $3); */ free($2); } | TINC register code - | TINC IDENTIFIER code + | TINC IDENTIFIER code { free($2); } ; loop: TLOOP code END_LOOP @@ -160,6 +160,7 @@ calltype: FASTCALL arguments: %empty | IDENTIFIER arguments { free($1); } + | STRING_LITERAL arguments { free($1); } | register arguments | immediate arguments ;