Eric Pouech : dbghelp: Fixed regressions introduced by growing arrays exponentially instead of linearly .
Alexandre Julliard
julliard at winehq.org
Tue Jul 14 10:37:53 CDT 2009
Module: wine
Branch: master
Commit: f2b7ec1c2cd22d9a2a6b7e15617f0acba5472727
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f2b7ec1c2cd22d9a2a6b7e15617f0acba5472727
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Tue Jul 14 12:17:22 2009 +0200
dbghelp: Fixed regressions introduced by growing arrays exponentially instead of linearly.
---
dlls/dbghelp/minidump.c | 32 +++++++++++++++++++-------------
1 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/dlls/dbghelp/minidump.c b/dlls/dbghelp/minidump.c
index a786d29..4108ef4 100644
--- a/dlls/dbghelp/minidump.c
+++ b/dlls/dbghelp/minidump.c
@@ -266,18 +266,23 @@ static BOOL add_module(struct dump_context* dc, const WCHAR* name,
dc->modules = HeapReAlloc(GetProcessHeap(), 0, dc->modules,
dc->alloc_modules * sizeof(*dc->modules));
}
- if (!dc->modules) return FALSE;
+ if (!dc->modules)
+ {
+ dc->alloc_modules = dc->num_modules = 0;
+ return FALSE;
+ }
if (is_elf ||
!GetModuleFileNameExW(dc->hProcess, (HMODULE)base,
- dc->modules[dc->num_modules - 1].name,
- sizeof(dc->modules[dc->num_modules - 1].name) / sizeof(WCHAR)))
- lstrcpynW(dc->modules[dc->num_modules - 1].name, name,
- sizeof(dc->modules[dc->num_modules - 1].name) / sizeof(WCHAR));
- dc->modules[dc->num_modules - 1].base = base;
- dc->modules[dc->num_modules - 1].size = size;
- dc->modules[dc->num_modules - 1].timestamp = timestamp;
- dc->modules[dc->num_modules - 1].checksum = checksum;
- dc->modules[dc->num_modules - 1].is_elf = is_elf;
+ dc->modules[dc->num_modules].name,
+ sizeof(dc->modules[dc->num_modules].name) / sizeof(WCHAR)))
+ lstrcpynW(dc->modules[dc->num_modules].name, name,
+ sizeof(dc->modules[dc->num_modules].name) / sizeof(WCHAR));
+ dc->modules[dc->num_modules].base = base;
+ dc->modules[dc->num_modules].size = size;
+ dc->modules[dc->num_modules].timestamp = timestamp;
+ dc->modules[dc->num_modules].checksum = checksum;
+ dc->modules[dc->num_modules].is_elf = is_elf;
+ dc->num_modules++;
return TRUE;
}
@@ -402,9 +407,10 @@ static void add_memory_block(struct dump_context* dc, ULONG64 base, ULONG size,
}
if (dc->mem)
{
- dc->mem[dc->num_mem - 1].base = base;
- dc->mem[dc->num_mem - 1].size = size;
- dc->mem[dc->num_mem - 1].rva = rva;
+ dc->mem[dc->num_mem].base = base;
+ dc->mem[dc->num_mem].size = size;
+ dc->mem[dc->num_mem].rva = rva;
+ dc->num_mem++;
}
else dc->num_mem = dc->alloc_mem = 0;
}
More information about the wine-cvs
mailing list