Eric Pouech : dbghelp: Better support for OOM conditions when creating source file table.
Alexandre Julliard
julliard at winehq.org
Mon Jan 10 10:55:24 CST 2011
Module: wine
Branch: master
Commit: cbd5811e90c13e2a0ba563140d6315b338b88050
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbd5811e90c13e2a0ba563140d6315b338b88050
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Sat Jan 8 14:15:25 2011 +0100
dbghelp: Better support for OOM conditions when creating source file table.
---
dlls/dbghelp/source.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/source.c b/dlls/dbghelp/source.c
index c8ecf26..92c68b7 100644
--- a/dlls/dbghelp/source.c
+++ b/dlls/dbghelp/source.c
@@ -73,27 +73,31 @@ unsigned source_new(struct module* module, const char* base, const char* name)
}
if (!module->sources || (ret = source_find(module, full)) == (unsigned)-1)
{
+ char* new;
int len = strlen(full) + 1;
if (module->sources_used + len + 1 > module->sources_alloc)
{
if (!module->sources)
{
module->sources_alloc = (module->sources_used + len + 1 + 255) & ~255;
- module->sources = HeapAlloc(GetProcessHeap(), 0, module->sources_alloc);
+ new = HeapAlloc(GetProcessHeap(), 0, module->sources_alloc);
}
else
{
module->sources_alloc = max( module->sources_alloc * 2,
(module->sources_used + len + 1 + 255) & ~255 );
- module->sources = HeapReAlloc(GetProcessHeap(), 0, module->sources,
- module->sources_alloc);
+ new = HeapReAlloc(GetProcessHeap(), 0, module->sources,
+ module->sources_alloc);
}
+ if (!new) goto done;
+ module->sources = new;
}
ret = module->sources_used;
memcpy(module->sources + module->sources_used, full, len);
module->sources_used += len;
module->sources[module->sources_used] = '\0';
}
+done:
HeapFree(GetProcessHeap(), 0, tmp);
return ret;
}
More information about the wine-cvs
mailing list