mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
rpcrt4: Set the memory pointer in NdrBaseTypeUnmarshall to the buffer if we're unmarshalling on a server without memory being passed in.
This commit is contained in:
parent
17132f7e1f
commit
13e47d762a
@ -5463,10 +5463,18 @@ static unsigned char *WINAPI NdrBaseTypeUnmarshall(
|
|||||||
|
|
||||||
#define BASE_TYPE_UNMARSHALL(type) \
|
#define BASE_TYPE_UNMARSHALL(type) \
|
||||||
ALIGN_POINTER(pStubMsg->Buffer, sizeof(type)); \
|
ALIGN_POINTER(pStubMsg->Buffer, sizeof(type)); \
|
||||||
if (fMustAlloc || !*ppMemory) \
|
if (!fMustAlloc && !pStubMsg->IsClient && !*ppMemory) \
|
||||||
*ppMemory = NdrAllocate(pStubMsg, sizeof(type)); \
|
{ \
|
||||||
TRACE("*ppMemory: %p\n", *ppMemory); \
|
*ppMemory = pStubMsg->Buffer; \
|
||||||
**(type **)ppMemory = *(type *)pStubMsg->Buffer; \
|
TRACE("*ppMemory: %p\n", *ppMemory); \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
if (fMustAlloc) \
|
||||||
|
*ppMemory = NdrAllocate(pStubMsg, sizeof(type)); \
|
||||||
|
TRACE("*ppMemory: %p\n", *ppMemory); \
|
||||||
|
**(type **)ppMemory = *(type *)pStubMsg->Buffer; \
|
||||||
|
} \
|
||||||
pStubMsg->Buffer += sizeof(type);
|
pStubMsg->Buffer += sizeof(type);
|
||||||
|
|
||||||
switch(*pFormat)
|
switch(*pFormat)
|
||||||
|
@ -250,17 +250,13 @@ todo_wine {
|
|||||||
if (formattypes[2] == 0xd /* FC_ENUM16 */)
|
if (formattypes[2] == 0xd /* FC_ENUM16 */)
|
||||||
ok(mem != StubMsg.BufferStart + wiredatalen - srcsize, "%s: mem points to buffer %p %p\n", msgpfx, mem, StubMsg.BufferStart);
|
ok(mem != StubMsg.BufferStart + wiredatalen - srcsize, "%s: mem points to buffer %p %p\n", msgpfx, mem, StubMsg.BufferStart);
|
||||||
else
|
else
|
||||||
todo_wine {
|
|
||||||
ok(mem == StubMsg.BufferStart + wiredatalen - srcsize, "%s: mem doesn't point to buffer %p %p\n", msgpfx, mem, StubMsg.BufferStart);
|
ok(mem == StubMsg.BufferStart + wiredatalen - srcsize, "%s: mem doesn't point to buffer %p %p\n", msgpfx, mem, StubMsg.BufferStart);
|
||||||
}
|
|
||||||
ok(!cmp(mem, memsrc, size), "%s: incorrecly unmarshaled\n", msgpfx);
|
ok(!cmp(mem, memsrc, size), "%s: incorrecly unmarshaled\n", msgpfx);
|
||||||
ok(StubMsg.Buffer - StubMsg.BufferStart == wiredatalen, "%s: Buffer %p Start %p len %d\n", msgpfx, StubMsg.Buffer, StubMsg.BufferStart, wiredatalen);
|
ok(StubMsg.Buffer - StubMsg.BufferStart == wiredatalen, "%s: Buffer %p Start %p len %d\n", msgpfx, StubMsg.Buffer, StubMsg.BufferStart, wiredatalen);
|
||||||
ok(StubMsg.MemorySize == 0, "%s: memorysize %d\n", msgpfx, StubMsg.MemorySize);
|
ok(StubMsg.MemorySize == 0, "%s: memorysize %d\n", msgpfx, StubMsg.MemorySize);
|
||||||
if (formattypes[2] != 0xd /* FC_ENUM16 */) {
|
if (formattypes[2] != 0xd /* FC_ENUM16 */) {
|
||||||
todo_wine {
|
|
||||||
ok(my_alloc_called == num_additional_allocs, "%s: my_alloc got called %d times\n", msgpfx, my_alloc_called);
|
ok(my_alloc_called == num_additional_allocs, "%s: my_alloc got called %d times\n", msgpfx, my_alloc_called);
|
||||||
my_alloc_called = 0;
|
my_alloc_called = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HeapFree(GetProcessHeap(), 0, mem_orig);
|
HeapFree(GetProcessHeap(), 0, mem_orig);
|
||||||
|
Loading…
Reference in New Issue
Block a user