[Scummvm-cvs-logs] SF.net SVN: scummvm:[52575] scummvm/branches/gsoc2010-plugins/backends/ plugins/elf
dhewg at users.sourceforge.net
dhewg at users.sourceforge.net
Sun Sep 5 23:59:50 CEST 2010
Revision: 52575
http://scummvm.svn.sourceforge.net/scummvm/?rev=52575&view=rev
Author: dhewg
Date: 2010-09-05 21:59:50 +0000 (Sun, 05 Sep 2010)
Log Message:
-----------
PLUGINS: Plug some memleaks.
Modified Paths:
--------------
scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-loader.cpp
scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-provider.cpp
Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-loader.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-loader.cpp 2010-09-05 21:59:29 UTC (rev 52574)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-loader.cpp 2010-09-05 21:59:50 UTC (rev 52575)
@@ -51,16 +51,20 @@
// Expel the symbol table from memory
void DLObject::discard_symtab() {
free(_symtab);
+ _symtab = 0;
+
free(_strtab);
- _symtab = 0;
_strtab = 0;
+
_symbol_cnt = 0;
}
// Unload all objects from memory
void DLObject::unload() {
discard_symtab();
+
freeSegment(_segment);
+
_segment = 0;
_segmentSize = 0;
_segmentOffset = 0;
@@ -207,6 +211,7 @@
_file->read(shdr, ehdr->e_shnum * sizeof(*shdr)) !=
ehdr->e_shnum * sizeof(*shdr)) {
warning("elfloader: Section headers load failed.");
+ free(shdr);
return 0;
}
@@ -247,6 +252,8 @@
_file->read(_symtab, shdr[_symtab_sect].sh_size) !=
shdr[_symtab_sect].sh_size) {
warning("elfloader: Symbol table load failed.");
+ free(_symtab);
+ _symtab = 0;
return -1;
}
@@ -273,6 +280,8 @@
_file->read(_strtab, shdr[string_sect].sh_size) !=
shdr[string_sect].sh_size) {
warning("elfloader: Symbol table strings load failed.");
+ free(_strtab);
+ _strtab = 0;
return false;
}
@@ -314,8 +323,9 @@
return false;
}
- if (!(shdr = loadSectionHeaders(&ehdr)))
- ret = false;
+ shdr = loadSectionHeaders(&ehdr);
+ if (!shdr)
+ return false;
if (ret && ((_symtab_sect = loadSymbolTable(&ehdr, shdr)) < 0))
ret = false;
Modified: scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-provider.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-provider.cpp 2010-09-05 21:59:29 UTC (rev 52574)
+++ scummvm/branches/gsoc2010-plugins/backends/plugins/elf/elf-provider.cpp 2010-09-05 21:59:50 UTC (rev 52575)
@@ -71,8 +71,7 @@
bool ret = DynamicPlugin::loadPlugin();
- if (ret && _dlHandle)
- _dlHandle->discard_symtab();
+ _dlHandle->discard_symtab();
return ret;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list