From 989e2590a2242d59447aacd1b44148809f32f870 Mon Sep 17 00:00:00 2001 From: "XTra.KrazzY" Date: Sat, 25 Apr 2009 10:44:42 +0000 Subject: [PATCH] Tiny fix git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3072 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/DSPCore/Src/assemble.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Source/Core/DSPCore/Src/assemble.cpp b/Source/Core/DSPCore/Src/assemble.cpp index bc47c8e6ca..0c6edc072a 100644 --- a/Source/Core/DSPCore/Src/assemble.cpp +++ b/Source/Core/DSPCore/Src/assemble.cpp @@ -83,15 +83,15 @@ DSPAssembler::DSPAssembler(const AssemblerSettings &settings) : m_cur_addr(0), m_cur_pass(0), m_current_param(0), - settings_(settings) + settings_(settings), + gdg_buffer(NULL) { - gdg_buffer = NULL; - } DSPAssembler::~DSPAssembler() { - free(gdg_buffer); + if(gdg_buffer) + free(gdg_buffer); } bool DSPAssembler::Assemble(const char *text, std::vector &code, std::vector *line_numbers) @@ -108,10 +108,10 @@ bool DSPAssembler::Assemble(const char *text, std::vector &code, std::vecto // We now have the size of the output buffer if (m_totalSize > 0) { - if(gdg_buffer) - free(gdg_buffer); - gdg_buffer = (char *)malloc(m_totalSize * sizeof(u16) + 4); + if(!gdg_buffer) + return false; + memset(gdg_buffer, 0, m_totalSize * sizeof(u16)); } else return false; @@ -125,6 +125,11 @@ bool DSPAssembler::Assemble(const char *text, std::vector &code, std::vecto code[i] = *(u16 *)(gdg_buffer + i * 2); } + if(gdg_buffer) { + free(gdg_buffer); + gdg_buffer = NULL; + } + last_error_str = "(no errors)"; last_error = ERR_OK;