Robert Shearman : rpcrt4: If the number of pointers is 0 for NdrFullPointerXlatInit then

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 30 05:56:47 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 11eb8ee042f6b324d3b2c0457bcf5a676dfd7579
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=11eb8ee042f6b324d3b2c0457bcf5a676dfd7579

Author: Robert Shearman <rob at codeweavers.com>
Date:   Mon May 29 16:27:48 2006 +0100

rpcrt4: If the number of pointers is 0 for NdrFullPointerXlatInit then
set the number of pointers to a large default, so that NumberOfBuckets
doesn't end up less than zero.

---

 dlls/rpcrt4/ndr_fullpointer.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/dlls/rpcrt4/ndr_fullpointer.c b/dlls/rpcrt4/ndr_fullpointer.c
index f4485b2..b89b669 100644
--- a/dlls/rpcrt4/ndr_fullpointer.c
+++ b/dlls/rpcrt4/ndr_fullpointer.c
@@ -32,11 +32,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(rpc);
 PFULL_PTR_XLAT_TABLES WINAPI NdrFullPointerXlatInit(unsigned long NumberOfPointers,
                                                     XLAT_SIDE XlatSide)
 {
-    unsigned long NumberOfBuckets = ((NumberOfPointers + 3) & 4) - 1;
+    unsigned long NumberOfBuckets;
     PFULL_PTR_XLAT_TABLES pXlatTables = HeapAlloc(GetProcessHeap(), 0, sizeof(*pXlatTables));
 
     TRACE("(%ld, %d)\n", NumberOfPointers, XlatSide);
 
+    if (!NumberOfPointers) NumberOfPointers = 512;
+    NumberOfBuckets = ((NumberOfPointers + 3) & ~3) - 1;
+
     pXlatTables->RefIdToPointer.XlatTable =
         HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
             sizeof(void *) * NumberOfPointers);




More information about the wine-cvs mailing list