Author: tkreuzer
Date: Wed Apr 6 18:49:16 2011
New Revision: 51269
URL:
http://svn.reactos.org/svn/reactos?rev=51269&view=rev
Log:
[RPCRT4]
Fix return type of *ClientCall functions.
Merged from cmake branch
Modified:
trunk/reactos/dll/win32/rpcrt4/cproxy.c
trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c
trunk/reactos/include/psdk/rpcndr.h
Modified: trunk/reactos/dll/win32/rpcrt4/cproxy.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/cproxy.c?…
==============================================================================
--- trunk/reactos/dll/win32/rpcrt4/cproxy.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/rpcrt4/cproxy.c [iso-8859-1] Wed Apr 6 18:49:16 2011
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
+ *
* TODO: Handle non-i386 architectures
*/
@@ -96,7 +96,7 @@
args[0] = *(const WORD*)(fs + 8);
TRACE("(%p)->(%d)([%d bytes]) ret=%08x\n", iface, index, args[0],
args[1]);
- return NdrClientCall2(stubless->pStubDesc, fs, args + 2);
+ return NdrClientCall2(stubless->pStubDesc, fs, args + 2).Simple;
}
#define BLOCK_SIZE 1024
Modified: trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/ndr_stubl…
==============================================================================
--- trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/rpcrt4/ndr_stubless.c [iso-8859-1] Wed Apr 6 18:49:16 2011
@@ -510,7 +510,7 @@
}
else
{
- const NDR_PARAM_OI_OTHER *pParamOther =
+ const NDR_PARAM_OI_OTHER *pParamOther =
(const NDR_PARAM_OI_OTHER *)&pFormat[current_offset];
const unsigned char *pTypeFormat =
@@ -548,10 +548,7 @@
}
}
-/* the return type should be CLIENT_CALL_RETURN, but this is incompatible
- * with the way gcc returns structures. "void *" should be the largest type
- * that MIDL should allow you to return anyway */
-LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat, ...)
+CLIENT_CALL_RETURN WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING
pFormat, ...)
{
/* pointer to start of stack where arguments start */
RPC_MESSAGE rpcMsg;
@@ -574,7 +571,7 @@
/* -Oif or -Oicf generated format */
BOOL bV2Format = FALSE;
/* the value to return to the client from the remote procedure */
- LONG_PTR RetVal = 0;
+ CLIENT_CALL_RETURN RetVal = {0};
/* the pointer to the object when in OLE mode */
void * This = NULL;
PFORMAT_STRING pHandleFormat;
@@ -630,7 +627,7 @@
if (!(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT))
{
pFormat = client_get_handle(&stubMsg, pProcHeader, pHandleFormat,
&hBinding);
- if (!pFormat) return 0;
+ if (!pFormat) return RetVal;
}
bV2Format = (pStubDesc->Version >= 0x20000);
@@ -729,7 +726,7 @@
}
__EXCEPT_ALL
{
- RetVal = NdrProxyErrorHandler(GetExceptionCode());
+ RetVal.Simple = NdrProxyErrorHandler(GetExceptionCode());
}
__ENDTRY
}
@@ -830,7 +827,7 @@
client_free_handle(&stubMsg, pProcHeader, pHandleFormat, hBinding);
}
- TRACE("RetVal = 0x%lx\n", RetVal);
+ TRACE("RetVal = 0x%p\n", RetVal.Pointer);
return RetVal;
}
@@ -1465,7 +1462,7 @@
pRpcMsg->BufferLength = stubMsg.BufferLength;
/* allocate buffer for [out] and [ret] params */
- Status = I_RpcGetBuffer(pRpcMsg);
+ Status = I_RpcGetBuffer(pRpcMsg);
if (Status)
RpcRaiseException(Status);
stubMsg.Buffer = pRpcMsg->Buffer;
Modified: trunk/reactos/include/psdk/rpcndr.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/rpcndr.h?rev=…
==============================================================================
--- trunk/reactos/include/psdk/rpcndr.h [iso-8859-1] (original)
+++ trunk/reactos/include/psdk/rpcndr.h [iso-8859-1] Wed Apr 6 18:49:16 2011
@@ -650,15 +650,13 @@
RPCRTAPI unsigned char* RPC_ENTRY
NdrUserMarshalSimpleTypeConvert( ULONG *pFlags, unsigned char *pBuffer, unsigned char
FormatChar );
-/* Note: this should return a CLIENT_CALL_RETURN, but calling convention for
- * returning structures/unions is different between Windows and gcc on i386. */
-LONG_PTR RPC_VAR_ENTRY
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
NdrClientCall2( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
-LONG_PTR RPC_VAR_ENTRY
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
NdrClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
-LONG_PTR RPC_VAR_ENTRY
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
NdrAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ... );
-LONG_PTR RPC_VAR_ENTRY
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
NdrDcomAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ...
);
RPCRTAPI void RPC_ENTRY