1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 11:56:11 +00:00

winecfg: Support color profiles larger than MAX_PATH chars.

Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
This commit is contained in:
Stefan Dösinger 2022-06-28 13:55:00 +03:00 committed by Alexandre Julliard
parent 905dbb8f8b
commit 021eefdee0

View File

@ -22,6 +22,7 @@
*
*/
#include <assert.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
@ -554,15 +555,25 @@ static void set_color_from_theme(const WCHAR *keyName, COLORREF color)
static void do_parse_theme(WCHAR *file)
{
WCHAR keyName[MAX_PATH], keyNameValue[MAX_PATH];
WCHAR *keyName, keyNameValue[MAX_PATH];
DWORD len, allocLen = 512;
WCHAR *keyNamePtr = NULL;
int red = 0, green = 0, blue = 0;
COLORREF color;
WINE_TRACE("%s\n", wine_dbgstr_w(file));
keyName = malloc(sizeof(*keyName) * allocLen);
for (;;)
{
assert(keyName);
len = GetPrivateProfileStringW(L"Control Panel\\Colors", NULL, NULL, keyName,
allocLen, file);
if (len < allocLen - 2)
break;
GetPrivateProfileStringW(L"Control Panel\\Colors", NULL, NULL, keyName,
MAX_PATH, file);
allocLen *= 2;
keyName = realloc(keyName, sizeof(*keyName) * allocLen);
}
keyNamePtr = keyName;
while (*keyNamePtr!=0) {
@ -580,6 +591,7 @@ static void do_parse_theme(WCHAR *file)
keyNamePtr+=lstrlenW(keyNamePtr);
keyNamePtr++;
}
free(keyName);
}
static void on_theme_install(HWND dialog)