regedit: Fix item text reading in regedit.

This commit is contained in:
Bruno Jesus 2012-04-26 23:51:08 -03:00 committed by Alexandre Julliard
parent 28335fb39b
commit c3821f6c63

View file

@ -58,20 +58,17 @@ LPWSTR GetItemText(HWND hwndLV, UINT item)
{ {
LPWSTR newStr, curStr; LPWSTR newStr, curStr;
unsigned int maxLen = 128; unsigned int maxLen = 128;
if (item == 0) return NULL; /* first item is ALWAYS a default */
curStr = HeapAlloc(GetProcessHeap(), 0, maxLen * sizeof(WCHAR)); curStr = HeapAlloc(GetProcessHeap(), 0, maxLen * sizeof(WCHAR));
if (!curStr) return NULL; if (!curStr) return NULL;
if (item == 0) { /* first item is ALWAYS a default */
HeapFree(GetProcessHeap(), 0, curStr);
return NULL;
}
do { do {
ListView_GetItemTextW(hwndLV, item, 0, curStr, maxLen * sizeof(WCHAR)); ListView_GetItemTextW(hwndLV, item, 0, curStr, maxLen);
if (lstrlenW(curStr) < maxLen - 1) return curStr; if (lstrlenW(curStr) < maxLen - 1) return curStr;
newStr = HeapReAlloc(GetProcessHeap(), 0, curStr, maxLen * 2 * sizeof(WCHAR)); maxLen *= 2;
newStr = HeapReAlloc(GetProcessHeap(), 0, curStr, maxLen * sizeof(WCHAR));
if (!newStr) break; if (!newStr) break;
curStr = newStr; curStr = newStr;
maxLen *= 2;
} while (TRUE); } while (TRUE);
HeapFree(GetProcessHeap(), 0, curStr); HeapFree(GetProcessHeap(), 0, curStr);
return NULL; return NULL;