fixed many issues with the debugger
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 16 Sep 2022 00:29:44 +0000 (19:29 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 16 Sep 2022 00:29:44 +0000 (19:29 -0500)
compiler/src/wasm_emit.c
interpreter/src/debug/debug_thread.c
shared/include/bh.h

index 37ea48bd39ba4a4382a3d374ab967b93b1d38350..83427bf307aa3dfbc4e66672ef726634c27e057f 100644 (file)
@@ -271,8 +271,8 @@ static u32 debug_get_file_id(OnyxWasmModule *mod, const char *name) {
                 file_info.line_count = fc->line_count;
             }
         }
-        shput(mod->debug_context->file_info, name, file_info);
 
+        shput(mod->debug_context->file_info, name, file_info);
         return id;
     }
 
index ba0fa285ec41d8e731b3c2074e8549510797f34f..5d52312c453f25c14f992552d5cc72e93729ce29 100644 (file)
@@ -184,7 +184,7 @@ static void process_command(debug_state_t *debug, struct msg_parse_ctx_t *ctx) {
                 }
             }
 
-            printf("[INFO ] Setting breakpoint at %s:%d (%xd)\n", filename, line, instr);
+            printf("[INFO ] Setting breakpoint at %s:%d (%x)\n", filename, line, instr);
             
             debug_breakpoint_t bp;
             bp.id = debug->next_breakpoint_id++;
index 96d6e63964de502436292e6db1d3dc56a3e2e002..16a40da3890e7b57e40975012e12e94a5bdf805f 100644 (file)
@@ -2447,6 +2447,8 @@ b32 bh__arr_grow(bh_allocator alloc, void** arr, i32 elemsize, i32 cap) {
         arrptr = (bh__arr *) bh_alloc(alloc, sizeof(*arrptr) + elemsize * cap);
         if (arrptr == NULL) return 0;
 
+        memset(arrptr + 1, 0, elemsize * cap);
+
         arrptr->allocator = alloc;
         arrptr->capacity = cap;
         arrptr->length = 0;
@@ -2456,12 +2458,14 @@ b32 bh__arr_grow(bh_allocator alloc, void** arr, i32 elemsize, i32 cap) {
 
         if (arrptr->capacity < cap) {
             void* p;
-            i32 newcap = arrptr->capacity;
+            i32 newcap = arrptr->capacity, oldcap = arrptr->capacity;
             while (newcap < cap) newcap = BH_ARR_GROW_FORMULA(newcap);
 
             p = bh_resize(arrptr->allocator, arrptr, sizeof(*arrptr) + elemsize * newcap);
 
             if (p) {
+                memset(bh_pointer_add(((bh__arr *) p + 1), elemsize * oldcap), 0, elemsize * (newcap - oldcap - 1));
+
                 arrptr = (bh__arr *) p;
                 arrptr->capacity = newcap;
             } else {