Commit 99f3a924 authored by Uwe Bonnes's avatar Uwe Bonnes Committed by Alexandre Julliard

Use Thread pseudo handle and not Thread Id as argument for the call to

GetThreadSelectorEntry.
parent 9e1c48b8
...@@ -25,7 +25,7 @@ DEFAULT_DEBUG_CHANNEL(thunk) ...@@ -25,7 +25,7 @@ DEFAULT_DEBUG_CHANNEL(thunk)
*/ */
BOOL WINAPI WOWGetDescriptor( SEGPTR segptr, LPLDT_ENTRY ldtent ) BOOL WINAPI WOWGetDescriptor( SEGPTR segptr, LPLDT_ENTRY ldtent )
{ {
return GetThreadSelectorEntry( GetCurrentThreadId(), return GetThreadSelectorEntry( GetCurrentThread(),
segptr >> 16, ldtent ); segptr >> 16, ldtent );
} }
...@@ -345,8 +345,8 @@ static DWORD WOW_CallProc32W16( BOOL Ex ) ...@@ -345,8 +345,8 @@ static DWORD WOW_CallProc32W16( BOOL Ex )
argconvmask = VA_ARG16( valist, DWORD ); argconvmask = VA_ARG16( valist, DWORD );
proc32 = VA_ARG16( valist, FARPROC ); proc32 = VA_ARG16( valist, FARPROC );
TRACE("(%ld,%ld,%p, Ex%d args[",nrofargs,argconvmask,proc32,Ex); TRACE("(%ld,%ld,%p, Ex%d args[",nrofargs,argconvmask,proc32,Ex);
args = (DWORD*)HEAP_xalloc( GetProcessHeap(), 0, args = (DWORD*)HeapAlloc( GetProcessHeap(), 0, sizeof(DWORD)*nrofargs );
sizeof(DWORD)*nrofargs ); if(args == NULL) proc32 = NULL; /* maybe we should WARN here? */
/* CallProcEx doesn't need its args reversed */ /* CallProcEx doesn't need its args reversed */
for (i=0;i<nrofargs;i++) { for (i=0;i<nrofargs;i++) {
if (Ex) { if (Ex) {
...@@ -357,13 +357,14 @@ static DWORD WOW_CallProc32W16( BOOL Ex ) ...@@ -357,13 +357,14 @@ static DWORD WOW_CallProc32W16( BOOL Ex )
if (argconvmask & (1<<i)) if (argconvmask & (1<<i))
{ {
SEGPTR ptr = VA_ARG16( valist, SEGPTR ); SEGPTR ptr = VA_ARG16( valist, SEGPTR );
args[aix] = (DWORD)PTR_SEG_TO_LIN(ptr); if (args) args[aix] = (DWORD)PTR_SEG_TO_LIN(ptr);
if (TRACE_ON(thunk)) DPRINTF("%08lx(%p),",ptr,PTR_SEG_TO_LIN(ptr)); if (TRACE_ON(thunk)) DPRINTF("%08lx(%p),",ptr,PTR_SEG_TO_LIN(ptr));
} }
else else
{ {
args[aix] = VA_ARG16( valist, DWORD ); DWORD arg = VA_ARG16( valist, DWORD );
if (TRACE_ON(thunk)) DPRINTF("%ld,",args[aix]); if (args) args[aix] = arg;
if (TRACE_ON(thunk)) DPRINTF("%ld,", arg);
} }
} }
if (TRACE_ON(thunk)) DPRINTF("])\n"); if (TRACE_ON(thunk)) DPRINTF("])\n");
...@@ -407,6 +408,7 @@ static DWORD WOW_CallProc32W16( BOOL Ex ) ...@@ -407,6 +408,7 @@ static DWORD WOW_CallProc32W16( BOOL Ex )
ret = 0; ret = 0;
break; break;
} }
/* POP nrofargs DWORD arguments and 3 DWORD parameters */ /* POP nrofargs DWORD arguments and 3 DWORD parameters */
if (!Ex) stack16_pop( (3 + nrofargs) * sizeof(DWORD) ); if (!Ex) stack16_pop( (3 + nrofargs) * sizeof(DWORD) );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment