Don't take 32K, but take 4K.
It looks we have a problem when we take 32K*sizeof(WCHAR) memory.
wine silently fails (with exit status 0) and left wine.core file
randomly.
Let me use 4K. With 4K, wine.core was not created, and looks working.
BUG=http://b/26972158
Change-Id: I0dfa024add0fb1d951d009f459a5fd966781f949
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 1106502..9a43812 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -342,8 +342,8 @@
NTSTATUS status;
DWORD size;
int index;
- char buffer[32768*sizeof(WCHAR) + sizeof(KEY_VALUE_FULL_INFORMATION)];
- WCHAR tmpbuf[32768];
+ char buffer[4096*sizeof(WCHAR) + sizeof(KEY_VALUE_FULL_INFORMATION)];
+ WCHAR tmpbuf[4096];
UNICODE_STRING tmp;
KEY_VALUE_FULL_INFORMATION *info = (KEY_VALUE_FULL_INFORMATION *)buffer;
@@ -459,7 +459,7 @@
*/
static WCHAR *get_reg_value( HKEY hkey, const WCHAR *name )
{
- char buffer[32768 * sizeof(WCHAR) + sizeof(KEY_VALUE_PARTIAL_INFORMATION)];
+ char buffer[4096 * sizeof(WCHAR) + sizeof(KEY_VALUE_PARTIAL_INFORMATION)];
KEY_VALUE_PARTIAL_INFORMATION *info = (KEY_VALUE_PARTIAL_INFORMATION *)buffer;
DWORD len, size = sizeof(buffer);
WCHAR *ret = NULL;
@@ -480,7 +480,7 @@
value.Buffer = (WCHAR *)info->Data;
if (!value.Buffer[len - 1]) len--; /* don't count terminating null if any */
value.Length = len * sizeof(WCHAR);
- expanded.Length = expanded.MaximumLength = 32768 * sizeof(WCHAR);
+ expanded.Length = expanded.MaximumLength = 4096 * sizeof(WCHAR);
if (!(expanded.Buffer = HeapAlloc( GetProcessHeap(), 0, expanded.MaximumLength ))) return NULL;
if (!RtlExpandEnvironmentStrings_U( NULL, &value, &expanded, NULL )) ret = expanded.Buffer;
else RtlFreeUnicodeString( &expanded );