From 78446f0ed44d3c4034a7db80208d0ad710cf05f6 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Wed, 27 Sep 2017 22:09:26 +0300 Subject: [PATCH] Fixed several memory leaks (mostly in Cocoa port debugging utils) --- Cocoa/Document.m | 13 +++++++++++-- Core/gb.c | 2 +- HexFiend/HFTextVisualStyleRun.m | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index ffcf870..0997d49 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -157,7 +157,11 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height, self.view.mouseHidingEnabled = (self.mainWindow.styleMask & NSFullScreenWindowMask) != 0; [self.view flip]; GB_set_pixels_output(&gb, self.view.pixels); - [self reloadVRAMData: nil]; + if (self.vramWindow.isVisible) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self reloadVRAMData: nil]; + }); + } } - (void) run @@ -734,8 +738,13 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height, NULL, YES, renderingIntent); + CGDataProviderRelease(provider); + CGColorSpaceRelease(colorSpaceRef); - return [[NSImage alloc] initWithCGImage:iref size:NSMakeSize(width * scale, height * scale)]; + NSImage *ret = [[NSImage alloc] initWithCGImage:iref size:NSMakeSize(width * scale, height * scale)]; + CGImageRelease(iref); + + return ret; } - (void) reloadMemoryView diff --git a/Core/gb.c b/Core/gb.c index 923b403..6109c93 100755 --- a/Core/gb.c +++ b/Core/gb.c @@ -137,7 +137,7 @@ void GB_free(GB_gameboy_t *gb) } } for (int i = 0x400; i--;) { - if (gb->reversed_symbol_map.buckets[i]) { + while (gb->reversed_symbol_map.buckets[i]) { GB_symbol_t *next = gb->reversed_symbol_map.buckets[i]->next; free(gb->reversed_symbol_map.buckets[i]); gb->reversed_symbol_map.buckets[i] = next; diff --git a/HexFiend/HFTextVisualStyleRun.m b/HexFiend/HFTextVisualStyleRun.m index e9675cd..39442d5 100644 --- a/HexFiend/HFTextVisualStyleRun.m +++ b/HexFiend/HFTextVisualStyleRun.m @@ -22,6 +22,7 @@ [_backgroundColor release]; [_bookmarkStarts release]; [_bookmarkExtents release]; + [_bookmarkEnds release]; [super dealloc]; }