https://git.reactos.org/?p=reactos.git;a=commitdiff;h=96d77d846fc22468b7fdc0...
commit 96d77d846fc22468b7fdc00720ded699a641e508 Author: Amine Khaldi amine.khaldi@reactos.org AuthorDate: Mon Jun 4 03:49:11 2018 +0100 Commit: Amine Khaldi amine.khaldi@reactos.org CommitDate: Mon Jun 4 03:49:11 2018 +0100
[RPCRT4] Sync with Wine Staging 3.9. CORE-14656 --- dll/win32/rpcrt4/ndr_marshall.c | 28 ++++++++++++++++++++++++---- dll/win32/rpcrt4/rpc_server.c | 3 ++- media/doc/README.WINE | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/dll/win32/rpcrt4/ndr_marshall.c b/dll/win32/rpcrt4/ndr_marshall.c index ee58b60a55..6356fb9d98 100644 --- a/dll/win32/rpcrt4/ndr_marshall.c +++ b/dll/win32/rpcrt4/ndr_marshall.c @@ -5745,11 +5745,16 @@ static unsigned char *union_arm_marshall(PMIDL_STUB_MESSAGE pStubMsg, unsigned c pStubMsg->Buffer = saved_buffer + 4; } break; + case RPC_FC_IP: + /* must be dereferenced first */ + m(pStubMsg, *(unsigned char **)pMemory, desc); + break; default: m(pStubMsg, pMemory, desc); } } - else FIXME("no marshaller for embedded type %02x\n", *desc); + else if (*desc) + FIXME("no marshaller for embedded type %02x\n", *desc); } return NULL; } @@ -5814,11 +5819,16 @@ static unsigned char *union_arm_unmarshall(PMIDL_STUB_MESSAGE pStubMsg, pStubMsg->Buffer = saved_buffer + 4; } break; + case RPC_FC_IP: + /* must be dereferenced first */ + m(pStubMsg, *(unsigned char ***)ppMemory, desc, fMustAlloc); + break; default: m(pStubMsg, ppMemory, desc, fMustAlloc); } } - else FIXME("no marshaller for embedded type %02x\n", *desc); + else if (*desc) + FIXME("no marshaller for embedded type %02x\n", *desc); } return NULL; } @@ -5868,11 +5878,16 @@ static void union_arm_buffer_size(PMIDL_STUB_MESSAGE pStubMsg, pStubMsg->BufferLength = saved_buffer_length; } break; + case RPC_FC_IP: + /* must be dereferenced first */ + m(pStubMsg, *(unsigned char **)pMemory, desc); + break; default: m(pStubMsg, pMemory, desc); } } - else FIXME("no buffersizer for embedded type %02x\n", *desc); + else if (*desc) + FIXME("no buffersizer for embedded type %02x\n", *desc); } }
@@ -5920,7 +5935,8 @@ static ULONG union_arm_memory_size(PMIDL_STUB_MESSAGE pStubMsg, return m(pStubMsg, desc); } } - else FIXME("no marshaller for embedded type %02x\n", *desc); + else if (*desc) + FIXME("no marshaller for embedded type %02x\n", *desc); }
TRACE("size %d\n", size); @@ -5955,6 +5971,10 @@ static void union_arm_free(PMIDL_STUB_MESSAGE pStubMsg, case RPC_FC_FP: PointerFree(pStubMsg, *(unsigned char **)pMemory, desc); break; + case RPC_FC_IP: + /* must be dereferenced first */ + m(pStubMsg, *(unsigned char **)pMemory, desc); + break; default: m(pStubMsg, pMemory, desc); } diff --git a/dll/win32/rpcrt4/rpc_server.c b/dll/win32/rpcrt4/rpc_server.c index d1b5d64ece..91de3b95fa 100644 --- a/dll/win32/rpcrt4/rpc_server.c +++ b/dll/win32/rpcrt4/rpc_server.c @@ -1220,7 +1220,8 @@ RPC_STATUS WINAPI RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid
EnterCriticalSection(&server_cs); LIST_FOR_EACH_ENTRY(cif, &server_interfaces, RpcServerInterface, entry) { - if ((!IfSpec || !memcmp(&If->InterfaceId, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER))) && + if (((!IfSpec && !(cif->Flags & RPC_IF_AUTOLISTEN)) || + (IfSpec && !memcmp(&If->InterfaceId, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER)))) && UuidEqual(MgrTypeUuid, &cif->MgrTypeUuid, &status)) { list_remove(&cif->entry); TRACE("unregistering cif %p\n", cif); diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 4e58c6349f..32a8639dc3 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -160,7 +160,7 @@ reactos/dll/win32/rasapi32 # Synced to WineStaging-3.3 reactos/dll/win32/resutils # Synced to WineStaging-3.3 reactos/dll/win32/riched20 # Synced to WineStaging-3.9 reactos/dll/win32/riched32 # Synced to WineStaging-3.3 -reactos/dll/win32/rpcrt4 # Synced to WineStaging-3.3 +reactos/dll/win32/rpcrt4 # Synced to WineStaging-3.9 reactos/dll/win32/rsabase # Synced to WineStaging-3.3 reactos/dll/win32/rsaenh # Synced to WineStaging-2.9 reactos/dll/win32/sccbase # Synced to WineStaging-3.3