From acc112bad7a88252283d176334ccd18f5e0c66f7 Mon Sep 17 00:00:00 2001 From: Damjan Jovanovic Date: Sun, 19 Jun 2011 18:06:08 +0200 Subject: [PATCH] rpcrt4: Implement RpcProtseqVectorFree. --- dlls/rpcrt4/rpc_transport.c | 36 ++++++++++++++++++++++++++++++++++++ dlls/rpcrt4/rpcrt4.spec | 4 ++-- include/rpcdce.h | 6 ++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c index 07a1e0401b4..0ba97202850 100644 --- a/dlls/rpcrt4/rpc_transport.c +++ b/dlls/rpcrt4/rpc_transport.c @@ -3124,3 +3124,39 @@ RPC_STATUS WINAPI RpcNetworkIsProtseqValidA(RPC_CSTR protseq) } return RPC_S_OUT_OF_MEMORY; } + +/*********************************************************************** + * RpcProtseqVectorFreeA (RPCRT4.@) + */ +RPC_STATUS WINAPI RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA **protseqs) +{ + TRACE("(%p)\n", protseqs); + + if (*protseqs) + { + int i; + for (i = 0; i < (*protseqs)->Count; i++) + HeapFree(GetProcessHeap(), 0, (*protseqs)->Protseq[i]); + HeapFree(GetProcessHeap(), 0, *protseqs); + *protseqs = NULL; + } + return RPC_S_OK; +} + +/*********************************************************************** + * RpcProtseqVectorFreeW (RPCRT4.@) + */ +RPC_STATUS WINAPI RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW **protseqs) +{ + TRACE("(%p)\n", protseqs); + + if (*protseqs) + { + int i; + for (i = 0; i < (*protseqs)->Count; i++) + HeapFree(GetProcessHeap(), 0, (*protseqs)->Protseq[i]); + HeapFree(GetProcessHeap(), 0, *protseqs); + *protseqs = NULL; + } + return RPC_S_OK; +} diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec index 598e60efccc..38d29e840c0 100644 --- a/dlls/rpcrt4/rpcrt4.spec +++ b/dlls/rpcrt4/rpcrt4.spec @@ -418,8 +418,8 @@ @ stub RpcObjectInqType @ stub RpcObjectSetInqFn @ stdcall RpcObjectSetType(ptr ptr) -@ stub RpcProtseqVectorFreeA -@ stub RpcProtseqVectorFreeW +@ stdcall RpcProtseqVectorFreeA(ptr) +@ stdcall RpcProtseqVectorFreeW(ptr) @ stdcall RpcRaiseException(long) @ stub RpcRegisterAsyncInfo @ stdcall RpcRevertToSelf() diff --git a/include/rpcdce.h b/include/rpcdce.h index 6b3bd3a88b8..76994dfdfdb 100644 --- a/include/rpcdce.h +++ b/include/rpcdce.h @@ -561,6 +561,12 @@ RPCRTAPI RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW( RPC_WSTR protseq ); #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid) +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcProtseqVectorFreeA( RPC_PROTSEQ_VECTORA** protseqs ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcProtseqVectorFreeW( RPC_PROTSEQ_VECTORW** protseqs ); +#define RpcProtseqVectorFree WINELIB_NAME_AW(RpcProtseqVectorFree) + RPCRTAPI RPC_STATUS RPC_ENTRY RpcRevertToSelf( void ); RPCRTAPI RPC_STATUS RPC_ENTRY