Module: wine Branch: refs/heads/master Commit: d29108c3963fef8b30041ab9913edb0863c8a2b6 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=d29108c3963fef8b30041ab9...
Author: Robert Shearman rob@codeweavers.com Date: Wed Aug 9 18:16:49 2006 +0100
rpcrt4: Set retval_ptr and allocate memory for out pointers for the old format stubless intepreter.
---
dlls/rpcrt4/ndr_stubless.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index 1459d91..9206c38 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -1461,6 +1461,8 @@ #endif case STUBLESS_UNMARSHAL: if (pParam->param_direction == RPC_FC_IN_PARAM_BASETYPE) call_unmarshaller(&stubMsg, &pArg, pTypeFormat, 0); + else if (pParam->param_direction == RPC_FC_RETURN_PARAM_BASETYPE) + retval_ptr = (LONG_PTR *)pArg; break; case STUBLESS_CALCSIZE: if (pParam->param_direction == RPC_FC_RETURN_PARAM_BASETYPE) @@ -1495,6 +1497,18 @@ #endif if (pParam->param_direction == RPC_FC_IN_OUT_PARAM || pParam->param_direction == RPC_FC_IN_PARAM) call_unmarshaller(&stubMsg, (unsigned char **)pArg, pTypeFormat, 0); + else if (pParam->param_direction == RPC_FC_RETURN_PARAM) + retval_ptr = (LONG_PTR *)pArg; + else if (pParam->param_direction == RPC_FC_OUT_PARAM) + { + DWORD size = calc_arg_size(&stubMsg, pTypeFormat); + + if(size) + { + *(void **)pArg = NdrAllocate(&stubMsg, size); + memset(*(void **)pArg, 0, size); + } + } break; case STUBLESS_CALCSIZE: if (pParam->param_direction == RPC_FC_OUT_PARAM ||