allocate enough memory for strings, lstrlenW returns the length of the string in characters, not bytes.

svn path=/trunk/; revision=16511
This commit is contained in:
Thomas Bluemel 2005-07-08 19:21:28 +00:00
parent 4c9e39ee83
commit d556da508d

View file

@ -200,7 +200,7 @@ StringTableAddString(HSTRING_TABLE hStringTable,
{ {
if (pStringTable->pSlots[i] == NULL) if (pStringTable->pSlots[i] == NULL)
{ {
pStringTable->pSlots[i] = MyMalloc(lstrlenW(lpString) + sizeof(WCHAR)); pStringTable->pSlots[i] = MyMalloc((lstrlenW(lpString) + 1) * sizeof(WCHAR));
if (pStringTable->pSlots[i] == NULL) if (pStringTable->pSlots[i] == NULL)
{ {
TRACE("Couldn't allocate memory for a new string!\n"); TRACE("Couldn't allocate memory for a new string!\n");
@ -276,7 +276,7 @@ StringTableDuplicate(HSTRING_TABLE hStringTable)
{ {
if (pSourceTable->pSlots[i] != NULL) if (pSourceTable->pSlots[i] != NULL)
{ {
length = lstrlenW(pSourceTable->pSlots[i]) + sizeof(WCHAR); length = lstrlenW((pSourceTable->pSlots[i]) + 1) * sizeof(WCHAR);
pDestinationTable->pSlots[i] = MyMalloc(length); pDestinationTable->pSlots[i] = MyMalloc(length);
if (pDestinationTable->pSlots[i] != NULL) if (pDestinationTable->pSlots[i] != NULL)
{ {
@ -429,7 +429,7 @@ StringTableStringFromIdEx(HSTRING_TABLE hStringTable,
return FALSE; return FALSE;
} }
dwLength = lstrlenW(pStringTable->pSlots[dwId]) + sizeof(WCHAR); dwLength = (lstrlenW(pStringTable->pSlots[dwId]) + 1) * sizeof(WCHAR);
if (dwLength <= *lpBufferLength) if (dwLength <= *lpBufferLength)
{ {
lstrcpyW(lpBuffer, pStringTable->pSlots[dwId]); lstrcpyW(lpBuffer, pStringTable->pSlots[dwId]);