mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 17:56:06 +00:00
[RPCRT4] Sync with Wine 3.0. CORE-14225
This commit is contained in:
parent
44f07538ba
commit
90155f749f
5 changed files with 14 additions and 13 deletions
|
@ -41,7 +41,7 @@ typedef struct
|
||||||
|
|
||||||
static inline cstdstubbuffer_delegating_t *impl_from_delegating( IRpcStubBuffer *iface )
|
static inline cstdstubbuffer_delegating_t *impl_from_delegating( IRpcStubBuffer *iface )
|
||||||
{
|
{
|
||||||
return CONTAINING_RECORD((void *)iface, cstdstubbuffer_delegating_t, stub_buffer);
|
return CONTAINING_RECORD(iface, cstdstubbuffer_delegating_t, stub_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT CStdStubBuffer_Construct(REFIID riid,
|
HRESULT CStdStubBuffer_Construct(REFIID riid,
|
||||||
|
|
|
@ -1116,6 +1116,11 @@ LONG_PTR __cdecl call_server_func(SERVER_ROUTINE func, unsigned char * args, uns
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline BOOL param_needs_alloc( PARAM_ATTRIBUTES attr )
|
||||||
|
{
|
||||||
|
return attr.IsOut && !attr.IsIn && !attr.IsBasetype && !attr.IsByValue;
|
||||||
|
}
|
||||||
|
|
||||||
static LONG_PTR *stub_do_args(MIDL_STUB_MESSAGE *pStubMsg,
|
static LONG_PTR *stub_do_args(MIDL_STUB_MESSAGE *pStubMsg,
|
||||||
PFORMAT_STRING pFormat, enum stubless_phase phase,
|
PFORMAT_STRING pFormat, enum stubless_phase phase,
|
||||||
unsigned short number_of_params)
|
unsigned short number_of_params)
|
||||||
|
@ -1151,20 +1156,14 @@ static LONG_PTR *stub_do_args(MIDL_STUB_MESSAGE *pStubMsg,
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, *(void **)pArg);
|
HeapFree(GetProcessHeap(), 0, *(void **)pArg);
|
||||||
}
|
}
|
||||||
else if (params[i].attr.IsOut &&
|
else if (param_needs_alloc(params[i].attr) &&
|
||||||
!params[i].attr.IsIn &&
|
(!params[i].attr.MustFree || params[i].attr.IsSimpleRef))
|
||||||
!params[i].attr.IsBasetype &&
|
|
||||||
!params[i].attr.IsByValue)
|
|
||||||
{
|
{
|
||||||
if (*pTypeFormat != RPC_FC_BIND_CONTEXT) pStubMsg->pfnFree(*(void **)pArg);
|
if (*pTypeFormat != RPC_FC_BIND_CONTEXT) pStubMsg->pfnFree(*(void **)pArg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STUBLESS_INITOUT:
|
case STUBLESS_INITOUT:
|
||||||
if (!params[i].attr.IsIn &&
|
if (param_needs_alloc(params[i].attr) && !params[i].attr.ServerAllocSize)
|
||||||
params[i].attr.IsOut &&
|
|
||||||
!params[i].attr.IsBasetype &&
|
|
||||||
!params[i].attr.ServerAllocSize &&
|
|
||||||
!params[i].attr.IsByValue)
|
|
||||||
{
|
{
|
||||||
if (*pTypeFormat == RPC_FC_BIND_CONTEXT)
|
if (*pTypeFormat == RPC_FC_BIND_CONTEXT)
|
||||||
{
|
{
|
||||||
|
|
|
@ -784,10 +784,8 @@ static RPC_STATUS RPCRT4_stop_listen(BOOL auto_listen)
|
||||||
|
|
||||||
if (stop_listen) {
|
if (stop_listen) {
|
||||||
RpcServerProtseq *cps;
|
RpcServerProtseq *cps;
|
||||||
EnterCriticalSection(&server_cs);
|
|
||||||
LIST_FOR_EACH_ENTRY(cps, &protseqs, RpcServerProtseq, entry)
|
LIST_FOR_EACH_ENTRY(cps, &protseqs, RpcServerProtseq, entry)
|
||||||
RPCRT4_sync_with_server_thread(cps);
|
RPCRT4_sync_with_server_thread(cps);
|
||||||
LeaveCriticalSection(&server_cs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!auto_listen)
|
if (!auto_listen)
|
||||||
|
|
|
@ -151,6 +151,10 @@ static RPC_STATUS rpcrt4_conn_open_pipe(RpcConnection *Connection, LPCSTR pname,
|
||||||
if (pipe != INVALID_HANDLE_VALUE) break;
|
if (pipe != INVALID_HANDLE_VALUE) break;
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
if (err == ERROR_PIPE_BUSY) {
|
if (err == ERROR_PIPE_BUSY) {
|
||||||
|
if (WaitNamedPipeA(pname, NMPWAIT_USE_DEFAULT_WAIT)) {
|
||||||
|
TRACE("retrying busy server\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
TRACE("connection failed, error=%x\n", err);
|
TRACE("connection failed, error=%x\n", err);
|
||||||
return RPC_S_SERVER_TOO_BUSY;
|
return RPC_S_SERVER_TOO_BUSY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ reactos/dll/win32/rasapi32 # Synced to WineStaging-2.9
|
||||||
reactos/dll/win32/resutils # Synced to WineStaging-2.9
|
reactos/dll/win32/resutils # Synced to WineStaging-2.9
|
||||||
reactos/dll/win32/riched20 # Synced to Wine-3.0
|
reactos/dll/win32/riched20 # Synced to Wine-3.0
|
||||||
reactos/dll/win32/riched32 # Synced to WineStaging-2.9
|
reactos/dll/win32/riched32 # Synced to WineStaging-2.9
|
||||||
reactos/dll/win32/rpcrt4 # Synced to WineStaging-2.16
|
reactos/dll/win32/rpcrt4 # Synced to Wine-3.0
|
||||||
reactos/dll/win32/rsabase # Synced to WineStaging-2.9
|
reactos/dll/win32/rsabase # Synced to WineStaging-2.9
|
||||||
reactos/dll/win32/rsaenh # Synced to WineStaging-2.9
|
reactos/dll/win32/rsaenh # Synced to WineStaging-2.9
|
||||||
reactos/dll/win32/sccbase # Synced to WineStaging-2.9
|
reactos/dll/win32/sccbase # Synced to WineStaging-2.9
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue