https://git.reactos.org/?p=reactos.git;a=commitdiff;h=96d77d846fc22468b7fdc…
commit 96d77d846fc22468b7fdc00720ded699a641e508
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Mon Jun 4 03:49:11 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)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