kernel32/tests: Free environment block in the child process when it is unused.

This commit is contained in:
Andrew Nguyen 2011-01-16 04:35:21 -06:00 committed by Alexandre Julliard
parent e6da2aec8f
commit ba7f7046ee
1 changed files with 6 additions and 4 deletions

View File

@ -249,8 +249,8 @@ static void doChild(const char* file, const char* option)
STARTUPINFOA siA; STARTUPINFOA siA;
STARTUPINFOW siW; STARTUPINFOW siW;
int i; int i;
char* ptrA; char *ptrA, *ptrA_save;
WCHAR* ptrW; WCHAR *ptrW, *ptrW_save;
char bufA[MAX_PATH]; char bufA[MAX_PATH];
WCHAR bufW[MAX_PATH]; WCHAR bufW[MAX_PATH];
HANDLE hFile = CreateFileA(file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); HANDLE hFile = CreateFileA(file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
@ -311,7 +311,7 @@ static void doChild(const char* file, const char* option)
childPrintf(hFile, "CommandLineW=%s\n\n", encodeW(GetCommandLineW())); childPrintf(hFile, "CommandLineW=%s\n\n", encodeW(GetCommandLineW()));
/* output of environment (Ansi) */ /* output of environment (Ansi) */
ptrA = GetEnvironmentStringsA(); ptrA_save = ptrA = GetEnvironmentStringsA();
if (ptrA) if (ptrA)
{ {
char env_var[MAX_LISTED_ENV_VAR]; char env_var[MAX_LISTED_ENV_VAR];
@ -326,10 +326,11 @@ static void doChild(const char* file, const char* option)
ptrA += strlen(ptrA) + 1; ptrA += strlen(ptrA) + 1;
} }
childPrintf(hFile, "len=%d\n\n", i); childPrintf(hFile, "len=%d\n\n", i);
FreeEnvironmentStringsA(ptrA_save);
} }
/* output of environment (Unicode) */ /* output of environment (Unicode) */
ptrW = GetEnvironmentStringsW(); ptrW_save = ptrW = GetEnvironmentStringsW();
if (ptrW) if (ptrW)
{ {
WCHAR env_var[MAX_LISTED_ENV_VAR]; WCHAR env_var[MAX_LISTED_ENV_VAR];
@ -345,6 +346,7 @@ static void doChild(const char* file, const char* option)
ptrW += lstrlenW(ptrW) + 1; ptrW += lstrlenW(ptrW) + 1;
} }
childPrintf(hFile, "len=%d\n\n", i); childPrintf(hFile, "len=%d\n\n", i);
FreeEnvironmentStringsW(ptrW_save);
} }
childPrintf(hFile, "[Misc]\n"); childPrintf(hFile, "[Misc]\n");