fix some bugs in CreateActCtxA

svn path=/trunk/; revision=26393
This commit is contained in:
Christoph von Wittich 2007-04-18 12:31:39 +00:00
parent 285ed6ed7e
commit 99163e450a

View file

@ -65,44 +65,48 @@ CreateActCtxA(
ACTCTXW pActCtxW; ACTCTXW pActCtxW;
HANDLE hRetVal; HANDLE hRetVal;
ZeroMemory(&pActCtxW, sizeof(pActCtxW)); ZeroMemory(&pActCtxW, sizeof(ACTCTXW));
pActCtxW.cbSize = sizeof(pActCtxW); pActCtxW.cbSize = sizeof(ACTCTXW);
pActCtxW.dwFlags = pActCtx->dwFlags; pActCtxW.dwFlags = pActCtx->dwFlags;
pActCtxW.wLangId = pActCtx->wLangId;
pActCtxW.hModule = pActCtx->hModule;
pActCtxW.wProcessorArchitecture = pActCtx->wProcessorArchitecture; pActCtxW.wProcessorArchitecture = pActCtx->wProcessorArchitecture;
pActCtxW.dwFlags = pActCtx->wProcessorArchitecture;
pActCtxW.hModule = pActCtx->hModule; pActCtxW.hModule = pActCtx->hModule;
/* Convert ActCtx Strings */ /* Convert ActCtx Strings */
if (pActCtx->lpAssemblyDirectory) if (pActCtx->lpSource)
{ {
BasepAnsiStringToHeapUnicodeString(pActCtx->lpSource, BasepAnsiStringToHeapUnicodeString(pActCtx->lpSource,
(LPWSTR*) &pActCtxW.lpSource); (LPWSTR*) &pActCtxW.lpSource);
} }
if (pActCtx->lpAssemblyDirectory)
if (pActCtx->lpAssemblyDirectory) {
{ BasepAnsiStringToHeapUnicodeString(pActCtx->lpAssemblyDirectory,
BasepAnsiStringToHeapUnicodeString(pActCtx->lpAssemblyDirectory, (LPWSTR*) &pActCtxW.lpAssemblyDirectory);
(LPWSTR*) &pActCtxW.lpAssemblyDirectory); }
} if (HIWORD(pActCtx->lpResourceName))
if (pActCtx->lpResourceName) {
{ BasepAnsiStringToHeapUnicodeString(pActCtx->lpResourceName,
BasepAnsiStringToHeapUnicodeString(pActCtx->lpResourceName, (LPWSTR*) &pActCtxW.lpResourceName);
(LPWSTR*) &pActCtxW.lpResourceName); }
} else
if (pActCtx->lpApplicationName) {
{ pActCtxW.lpResourceName = (LPWSTR) pActCtx->lpResourceName;
BasepAnsiStringToHeapUnicodeString(pActCtx->lpApplicationName, }
(LPWSTR*) &pActCtxW.lpApplicationName); if (pActCtx->lpApplicationName)
} {
BasepAnsiStringToHeapUnicodeString(pActCtx->lpApplicationName,
(LPWSTR*) &pActCtxW.lpApplicationName);
}
/* Call the Unicode function */ /* Call the Unicode function */
hRetVal = CreateActCtxW(&pActCtxW); hRetVal = CreateActCtxW(&pActCtxW);
/* Clean up */ /* Clean up */
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpSource); RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpSource);
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpAssemblyDirectory); RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpAssemblyDirectory);
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpResourceName); if (HIWORD(pActCtx->lpResourceName))
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpResourceName);
RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpApplicationName); RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpApplicationName);
return hRetVal; return hRetVal;