mirror of
https://github.com/reactos/reactos.git
synced 2024-09-29 05:54:05 +00:00
[RTL] Import Wine commit f87767b by Piotr Caban: Handle ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID flag when opening manifest in RtlCreateActivationContext.
svn path=/trunk/; revision=65511
This commit is contained in:
parent
198dcf7d19
commit
3be4abc045
|
@ -4645,7 +4645,30 @@ RtlCreateActivationContext(IN ULONG Flags,
|
|||
if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
|
||||
(pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
|
||||
{
|
||||
if (!RtlDosPathNameToNtPathName_U(pActCtx->lpSource, &nameW, NULL, NULL))
|
||||
WCHAR *source = NULL;
|
||||
BOOLEAN ret;
|
||||
|
||||
if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
|
||||
RtlDetermineDosPathNameType_U(pActCtx->lpSource) == RtlPathTypeRelative)
|
||||
{
|
||||
DWORD dir_len, source_len;
|
||||
|
||||
dir_len = strlenW(pActCtx->lpAssemblyDirectory);
|
||||
source_len = strlenW(pActCtx->lpSource);
|
||||
if (!(source = RtlAllocateHeap( RtlGetProcessHeap(), 0, (dir_len+source_len+2)*sizeof(WCHAR))))
|
||||
{
|
||||
status = STATUS_NO_MEMORY;
|
||||
goto error;
|
||||
}
|
||||
|
||||
memcpy(source, pActCtx->lpAssemblyDirectory, dir_len*sizeof(WCHAR));
|
||||
source[dir_len] = '\\';
|
||||
memcpy(source+dir_len+1, pActCtx->lpSource, (source_len+1)*sizeof(WCHAR));
|
||||
}
|
||||
|
||||
ret = RtlDosPathNameToNtPathName_U(source ? source : pActCtx->lpSource, &nameW, NULL, NULL);
|
||||
if (source) RtlFreeHeap( RtlGetProcessHeap(), 0, source );
|
||||
if (!ret)
|
||||
{
|
||||
status = STATUS_NO_SUCH_FILE;
|
||||
goto error;
|
||||
|
|
Loading…
Reference in a new issue