From a56fcd4e981802f82b2dfadd125061d49ef8b104 Mon Sep 17 00:00:00 2001 From: hrydgard Date: Sun, 14 Sep 2008 09:12:19 +0000 Subject: [PATCH] Fixed some valgrind warnings. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@523 8ced0084-cf51-0410-be5f-012b33b47a6e --- Binary/linux/d.supp | 175 ++++++++++++++++++ Binary/linux/grind.sh | 2 + Source/Core/Common/Src/StringUtil.cpp | 5 + .../Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp | 13 +- Source/Core/Core/Src/HW/HW.cpp | 4 +- Source/Core/DebuggerWX/src/CodeView.cpp | 13 +- Source/Core/DebuggerWX/src/MemoryView.cpp | 10 +- 7 files changed, 212 insertions(+), 10 deletions(-) create mode 100644 Binary/linux/d.supp create mode 100644 Binary/linux/grind.sh diff --git a/Binary/linux/d.supp b/Binary/linux/d.supp new file mode 100644 index 0000000000..7580b904f9 --- /dev/null +++ b/Binary/linux/d.supp @@ -0,0 +1,175 @@ +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:* +} +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + fun:dlopen + fun:g_module_open + obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9 + fun:g_type_module_use + fun:gtk_theme_engine_get +} +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + fun:dlopen + fun:g_module_open + obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9 +} +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + fun:dlopen + fun:g_module_open +} +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libc-2.7.so + obj:/lib/libdl-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libdl-2.7.so + fun:dlsym + fun:g_module_symbol + fun:g_module_open + obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9 +} +{ + + Memcheck:Addr8 + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/ld-2.7.so + obj:/lib/libc-2.7.so + obj:/lib/ld-2.7.so + fun:__libc_dlopen_mode + obj:/lib/libc-2.7.so + obj:/lib/libc-2.7.so + obj:/lib/libc-2.7.so + obj:/lib/libc-2.7.so + obj:/lib/libc-2.7.so +} +{ + + Memcheck:Cond + fun:snd_pcm_direct_shm_create_or_connect + fun:snd_pcm_dmix_open + fun:_snd_pcm_dmix_open + obj:/usr/lib/libasound.so.2.0.0 + obj:/usr/lib/libasound.so.2.0.0 + fun:snd_pcm_open_named_slave + fun:_snd_pcm_softvol_open + obj:/usr/lib/libasound.so.2.0.0 + fun:snd_pcm_open_named_slave + fun:_snd_pcm_plug_open + obj:/usr/lib/libasound.so.2.0.0 + fun:snd_pcm_open_named_slave +} +{ + + Memcheck:Cond + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + fun:cgCreateProgram +} +{ + + Memcheck:Cond + obj:/usr/lib/libGLcore.so.169.12 + obj:/usr/lib/libGLcore.so.169.12 + fun:* +} +{ + + Memcheck:Cond + obj:/usr/lib/libasound.so.2.0.0 + obj:/usr/lib/libasound.so.2.0.0 +} +{ + + Memcheck:Addr8 + fun:snd_pcm_poll_descriptors_revents + fun:snd_pcm_wait_nocheck + fun:snd_pcm_write_areas + obj:/usr/lib/libasound.so.2.0.0 + obj:* +} +{ + + Memcheck:Addr8 + obj:/usr/lib/libasound.so.2.0.0 + fun:snd_pcm_wait_nocheck + fun:snd_pcm_write_areas + obj:/usr/lib/libasound.so.2.0.0 + obj:* +} +{ + + Memcheck:Cond + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + fun:cgCreateProgram + fun:_ZN15PixelShaderMngr18CompilePixelShaderER14FRAGMENTSHADERPKc +} +{ + + Memcheck:Cond + obj:/usr/lib/libCg.so + obj:/usr/lib/libCg.so + obj:* +} + diff --git a/Binary/linux/grind.sh b/Binary/linux/grind.sh new file mode 100644 index 0000000000..1224e52835 --- /dev/null +++ b/Binary/linux/grind.sh @@ -0,0 +1,2 @@ +valgrind --gen-suppressions=yes --suppressions=d.supp ./Dolphin $1 $2 $3 + diff --git a/Source/Core/Common/Src/StringUtil.cpp b/Source/Core/Common/Src/StringUtil.cpp index 590b20fc4a..638c301f24 100644 --- a/Source/Core/Common/Src/StringUtil.cpp +++ b/Source/Core/Common/Src/StringUtil.cpp @@ -165,6 +165,11 @@ void StringFromFormatV(std::string* out, const char* format, va_list args) delete [] buf; buf = new char[newSize + 1]; writtenCount = vsnprintf(buf, newSize, format, args); + // ARGH! vsnprintf does no longer return -1 on truncation in newer libc! + // WORKAROUND! let's fake the old behaviour (even though it's less efficient). + // TODO: figure out why the fix causes an invalid read in strlen called from vsnprintf :( + if (writtenCount >= (int)newSize) + writtenCount = -1; newSize *= 2; } diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp index 3e885c34a1..73be2a4385 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp @@ -46,6 +46,14 @@ CEXIMemoryCard::CEXIMemoryCard(const std::string& _rName, const std::string& _rF cards[_card_index] = this; et_this_card = CoreTiming::RegisterEvent(_rName.c_str(), FlushCallback); + interruptSwitch = 0; + m_bInterruptSet = 0; + command = 0; + status = MC_STATUS_BUSY | MC_STATUS_UNLOCKED | MC_STATUS_READY; + m_uPosition = 0; + memset(programming_buffer, 0, sizeof(programming_buffer)); + formatDelay = 0; + nintendo_card_id = 0x00000010; // 16MBit nintendo card card_id = 0xc221; /* nintendo_card_id = 0x00000510; // 16MBit "bigben" card @@ -71,11 +79,6 @@ CEXIMemoryCard::CEXIMemoryCard(const std::string& _rName, const std::string& _rF Core::DisplayMessage(StringFromFormat("Wrote memory card contents to %s", m_strFilename.c_str()), 4000); } - formatDelay = 0; - interruptSwitch = 0; - m_bInterruptSet = 0; - - status = MC_STATUS_BUSY | MC_STATUS_UNLOCKED | MC_STATUS_READY; } void CEXIMemoryCard::Flush(bool exiting) diff --git a/Source/Core/Core/Src/HW/HW.cpp b/Source/Core/Core/Src/HW/HW.cpp index 2089e41f6a..4cd1faf586 100644 --- a/Source/Core/Core/Src/HW/HW.cpp +++ b/Source/Core/Core/Src/HW/HW.cpp @@ -40,8 +40,6 @@ #include "../State.h" #include "../PowerPC/PPCAnalyst.h" -#define CURVERSION 0x0001 - namespace HW { void Init() @@ -49,7 +47,7 @@ namespace HW CoreTiming::Init(); PPCAnalyst::Init(); - Thunk_Init(); // not really hw, but this way we know it's inited first :P + Thunk_Init(); // not really hw, but this way we know it's inited early :P State_Init(); // Init the whole Hardware diff --git a/Source/Core/DebuggerWX/src/CodeView.cpp b/Source/Core/DebuggerWX/src/CodeView.cpp index 26e0d10a8e..c7bafae1e1 100644 --- a/Source/Core/DebuggerWX/src/CodeView.cpp +++ b/Source/Core/DebuggerWX/src/CodeView.cpp @@ -59,11 +59,22 @@ BEGIN_EVENT_TABLE(CCodeView, wxControl) END_EVENT_TABLE() CCodeView::CCodeView(DebugInterface* debuginterface, wxWindow* parent, wxWindowID Id, const wxSize& Size) - : wxControl(parent, Id, wxDefaultPosition, Size), debugger(debuginterface) + : wxControl(parent, Id, wxDefaultPosition, Size), + debugger(debuginterface), + rowHeight(13), + selection(0), + oldSelection(0), + selectionChanged(false), + selecting(false), + hasFocus(false), + showHex(false), + lx(-1), + ly(-1) { rowHeight = 13; align = debuginterface->getInstructionSize(0); curAddress = debuginterface->getPC(); + selection = 0; } diff --git a/Source/Core/DebuggerWX/src/MemoryView.cpp b/Source/Core/DebuggerWX/src/MemoryView.cpp index d6ffd0a9b0..a492d64027 100644 --- a/Source/Core/DebuggerWX/src/MemoryView.cpp +++ b/Source/Core/DebuggerWX/src/MemoryView.cpp @@ -46,7 +46,15 @@ EVT_MENU(-1, CMemoryView::OnPopupMenu) END_EVENT_TABLE() CMemoryView::CMemoryView(DebugInterface* debuginterface, wxWindow* parent, wxWindowID Id, const wxSize& Size) - : wxControl(parent, Id, wxDefaultPosition, Size), debugger(debuginterface) + : wxControl(parent, Id, wxDefaultPosition, Size), + debugger(debuginterface), + rowHeight(13), + selection(0), + oldSelection(0), + selectionChanged(false), + selecting(false), + hasFocus(false), + showHex(false) { rowHeight = 13; align = debuginterface->getInstructionSize(0);