From c116c45760f0029ccb5fd8c3c5a1d8d4ead0635b Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Fri, 17 Apr 2009 19:37:13 +0000 Subject: [PATCH] don't crash on setupapi stringtable winetest svn path=/trunk/; revision=40561 --- reactos/dll/win32/setupapi/stringtable.c | 25 ++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/reactos/dll/win32/setupapi/stringtable.c b/reactos/dll/win32/setupapi/stringtable.c index 7d8ef0801c7..b143cd5f0bc 100644 --- a/reactos/dll/win32/setupapi/stringtable.c +++ b/reactos/dll/win32/setupapi/stringtable.c @@ -607,13 +607,14 @@ StringTableLookUpStringEx(HSTRING_TABLE hStringTable, PSTRING_TABLE pStringTable; DWORD i; - TRACE("%p %s %lx\n", (PVOID)hStringTable, debugstr_w(lpString), dwFlags); + TRACE("%p %s %x %p, %x\n", hStringTable, debugstr_w(lpString), dwFlags, + lpExtraData, lpReserved); pStringTable = (PSTRING_TABLE)hStringTable; if (pStringTable == NULL) { ERR("Invalid hStringTable!\n"); - return (DWORD)-1; + return ~0u; } /* Search for existing string in the string table */ @@ -625,10 +626,12 @@ StringTableLookUpStringEx(HSTRING_TABLE hStringTable, { if (!lstrcmpW(pStringTable->pSlots[i].pString, lpString)) { - memcpy(lpExtraData, - pStringTable->pSlots[i].pData, - pStringTable->pSlots[i].dwSize); - *lpReserved = 0; + if (lpExtraData) + { + memcpy(lpExtraData, + pStringTable->pSlots[i].pData, + pStringTable->pSlots[i].dwSize); + } return i + 1; } } @@ -636,10 +639,12 @@ StringTableLookUpStringEx(HSTRING_TABLE hStringTable, { if (!lstrcmpiW(pStringTable->pSlots[i].pString, lpString)) { - memcpy(lpExtraData, - pStringTable->pSlots[i].pData, - pStringTable->pSlots[i].dwSize); - *lpReserved = 0; + if (lpExtraData) + { + memcpy(lpExtraData, + pStringTable->pSlots[i].pData, + pStringTable->pSlots[i].dwSize); + } return i + 1; } }