about summary refs log tree commit diff stats
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/env.c2
-rw-r--r--src/tools/gdbjit.c19
2 files changed, 10 insertions, 11 deletions
diff --git a/src/tools/env.c b/src/tools/env.c
index 16c4b194..95012386 100644
--- a/src/tools/env.c
+++ b/src/tools/env.c
@@ -138,7 +138,7 @@ static void applyCustomRules()
 
     if (box64env.is_dynarec_gdbjit_str_overridden) {
         if (strlen(box64env.dynarec_gdbjit_str) == 1) {
-            if (box64env.dynarec_gdbjit_str[0] >= '0' && box64env.dynarec_gdbjit_str[0] <= '2')
+            if (box64env.dynarec_gdbjit_str[0] >= '0' && box64env.dynarec_gdbjit_str[0] <= '3')
                 box64env.dynarec_gdbjit = box64env.dynarec_gdbjit_str[0] - '0';
 
             box64env.dynarec_gdbjit_start = 0x0;
diff --git a/src/tools/gdbjit.c b/src/tools/gdbjit.c
index 5813f562..f1a3b0ce 100644
--- a/src/tools/gdbjit.c
+++ b/src/tools/gdbjit.c
@@ -98,22 +98,21 @@ gdbjit_block_t* GdbJITBlockAddLine(gdbjit_block_t* block, GDB_CORE_ADDR addr, co
     return block;
 }
 
+void GdbJITBlockCleanup(gdbjit_block_t* block) {
+    if (block && block->file) {
+        fclose(block->file);
+        block->file = NULL;
+    }
+}
+
 void GdbJITBlockReady(gdbjit_block_t* block)
 {
     if (!block) return;
 
-    if (block->nlines == 0) {
-        fclose(block->file);
-        return;
-    }
+    if (block->nlines == 0) return;
 
     gdbjit_code_entry_t* entry = (gdbjit_code_entry_t*)box_malloc(sizeof(gdbjit_code_entry_t));
-    if (!entry) {
-        fclose(block->file);
-        return;
-    }
-
-    fclose(block->file);
+    if (!entry) return;
 
     entry->symfile_addr = (const char*)block;
     entry->symfile_size = sizeof(gdbjit_block_t) + block->nlines * sizeof(struct gdb_line_mapping);