mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 10:41:12 +00:00
rpcrt4: Ignore the return value of functions when unmarshalling a pickled procedure.
This commit is contained in:
parent
2b0ad6e6e7
commit
09f343b135
3 changed files with 10 additions and 8 deletions
|
@ -398,7 +398,7 @@ void WINAPIV NdrMesProcEncodeDecode(handle_t Handle, const MIDL_STUB_DESC * pStu
|
|||
|
||||
client_do_args_old_format(&pEsMsg->StubMsg, pFormat, PROXY_CALCSIZE,
|
||||
pEsMsg->StubMsg.StackTop, stack_size, (unsigned char *)&RetVal,
|
||||
FALSE /* object_proc */);
|
||||
FALSE /* object_proc */, TRUE /* ignore_retval */);
|
||||
|
||||
pEsMsg->ByteCount = pEsMsg->StubMsg.BufferLength - mes_proc_header_buffer_size();
|
||||
es_data_alloc(pEsMsg, pEsMsg->StubMsg.BufferLength);
|
||||
|
@ -407,7 +407,7 @@ void WINAPIV NdrMesProcEncodeDecode(handle_t Handle, const MIDL_STUB_DESC * pStu
|
|||
|
||||
client_do_args_old_format(&pEsMsg->StubMsg, pFormat, PROXY_MARSHAL,
|
||||
pEsMsg->StubMsg.StackTop, stack_size, (unsigned char *)&RetVal,
|
||||
FALSE /* object_proc */);
|
||||
FALSE /* object_proc */, TRUE /* ignore_retval */);
|
||||
|
||||
es_data_write(pEsMsg, pEsMsg->ByteCount);
|
||||
break;
|
||||
|
@ -418,7 +418,7 @@ void WINAPIV NdrMesProcEncodeDecode(handle_t Handle, const MIDL_STUB_DESC * pStu
|
|||
|
||||
client_do_args_old_format(&pEsMsg->StubMsg, pFormat, PROXY_UNMARSHAL,
|
||||
pEsMsg->StubMsg.StackTop, stack_size, (unsigned char *)&RetVal,
|
||||
FALSE /* object_proc */);
|
||||
FALSE /* object_proc */, TRUE /* ignore_retval */);
|
||||
break;
|
||||
default:
|
||||
RpcRaiseException(RPC_S_INTERNAL_ERROR);
|
||||
|
|
|
@ -441,7 +441,7 @@ static unsigned int type_stack_size(unsigned char fc)
|
|||
void client_do_args_old_format(PMIDL_STUB_MESSAGE pStubMsg,
|
||||
PFORMAT_STRING pFormat, int phase, unsigned char *args,
|
||||
unsigned short stack_size,
|
||||
unsigned char *pRetVal, BOOL object_proc)
|
||||
unsigned char *pRetVal, BOOL object_proc, BOOL ignore_retval)
|
||||
{
|
||||
/* current format string offset */
|
||||
int current_offset = 0;
|
||||
|
@ -492,7 +492,8 @@ void client_do_args_old_format(PMIDL_STUB_MESSAGE pStubMsg,
|
|||
call_marshaller(pStubMsg, pArg, pTypeFormat);
|
||||
break;
|
||||
case PROXY_UNMARSHAL:
|
||||
if (pParam->param_direction == RPC_FC_RETURN_PARAM_BASETYPE)
|
||||
if (!ignore_retval &&
|
||||
pParam->param_direction == RPC_FC_RETURN_PARAM_BASETYPE)
|
||||
{
|
||||
if (pParam->param_direction & RPC_FC_RETURN_PARAM)
|
||||
call_unmarshaller(pStubMsg, &pRetVal, pTypeFormat, 0);
|
||||
|
@ -723,7 +724,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
|||
else
|
||||
client_do_args_old_format(&stubMsg, pFormat, phase,
|
||||
stubMsg.StackTop, stack_size, (unsigned char *)&RetVal,
|
||||
(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT));
|
||||
(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT), FALSE);
|
||||
break;
|
||||
default:
|
||||
ERR("shouldn't reach here. phase %d\n", phase);
|
||||
|
@ -801,7 +802,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
|||
else
|
||||
client_do_args_old_format(&stubMsg, pFormat, phase,
|
||||
stubMsg.StackTop, stack_size, (unsigned char *)&RetVal,
|
||||
(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT));
|
||||
(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT), FALSE);
|
||||
break;
|
||||
default:
|
||||
ERR("shouldn't reach here. phase %d\n", phase);
|
||||
|
|
|
@ -238,4 +238,5 @@ typedef struct _NDR_EHD_CONTEXT
|
|||
|
||||
void client_do_args_old_format(PMIDL_STUB_MESSAGE pStubMsg,
|
||||
PFORMAT_STRING pFormat, int phase, unsigned char *args,
|
||||
unsigned short stack_size, unsigned char *pRetVal, BOOL object_proc);
|
||||
unsigned short stack_size, unsigned char *pRetVal, BOOL object_proc,
|
||||
BOOL ignore_retval);
|
||||
|
|
Loading…
Reference in a new issue