Replaced PTR_SEG_TO_LIN macro by exported MapSL function.
Fixed a few ptr/segptr mismatches.
Moved CONV_RECT/POINT macros to wingdi16.h.
diff --git a/loader/task.c b/loader/task.c
index 4cb9f81..f38f2b2 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -177,7 +177,7 @@
}
base += pThunk->free;
pThunk->free = *(WORD *)((BYTE *)pThunk + pThunk->free);
- return PTR_SEG_OFF_TO_SEGPTR( sel, base );
+ return MAKESEGPTR( sel, base );
}
@@ -278,8 +278,7 @@
pTask->pdb.savedint23 = INT_GetPMHandler( 0x23 );
pTask->pdb.savedint24 = INT_GetPMHandler( 0x24 );
pTask->pdb.fileHandlesPtr =
- PTR_SEG_OFF_TO_SEGPTR( GlobalHandleToSel16(pTask->hPDB),
- (int)&((PDB16 *)0)->fileHandles );
+ MAKESEGPTR( GlobalHandleToSel16(pTask->hPDB), (int)&((PDB16 *)0)->fileHandles );
pTask->pdb.hFileHandles = 0;
memset( pTask->pdb.fileHandles, 0xff, sizeof(pTask->pdb.fileHandles) );
/* FIXME: should we make a copy of the environment? */
@@ -316,8 +315,7 @@
/* Default DTA overwrites command line */
- pTask->dta = PTR_SEG_OFF_TO_SEGPTR( pTask->hPDB,
- (int)&pTask->pdb.cmdLine - (int)&pTask->pdb );
+ pTask->dta = MAKESEGPTR( pTask->hPDB, (int)&pTask->pdb.cmdLine - (int)&pTask->pdb );
/* Create scheduler event for 16-bit tasks */
@@ -617,7 +615,7 @@
size of the instance data segment before calling InitTask() */
/* Initialize the INSTANCEDATA structure */
- pinstance = (INSTANCEDATA *)PTR_SEG_OFF_TO_LIN(CURRENT_DS, 0);
+ pinstance = MapSL( MAKESEGPTR(CURRENT_DS, 0) );
pinstance->stackmin = OFFSETOF( pTask->teb->cur_stack ) + sizeof( STACK16FRAME );
pinstance->stackbottom = pinstance->stackmin; /* yup, that's right. Confused me too. */
pinstance->stacktop = ( pinstance->stackmin > LOWORD(context->Ebx) ?
@@ -642,7 +640,7 @@
* 0 (=%bp) is pushed on the stack
*/
ptr = stack16_push( sizeof(WORD) );
- *(WORD *)PTR_SEG_TO_LIN(ptr) = 0;
+ *(WORD *)MapSL(ptr) = 0;
context->Esp -= 2;
context->Eax = 1;
@@ -882,8 +880,8 @@
thunkaddr = TASK_AllocThunk( GetCurrentTask() );
if (!thunkaddr) return (FARPROC16)0;
- thunk = PTR_SEG_TO_LIN( thunkaddr );
- lfunc = PTR_SEG_TO_LIN( func );
+ thunk = MapSL( thunkaddr );
+ lfunc = MapSL( (SEGPTR)func );
TRACE("(%08lx,%04x): got thunk %08lx\n",
(DWORD)func, hInstance, (DWORD)thunkaddr );
@@ -947,7 +945,7 @@
/* Try thunk or function */
else
{
- BYTE *thunk = (BYTE *)PTR_SEG_TO_LIN( proc );
+ BYTE *thunk = MapSL( (SEGPTR)proc );
WORD selector;
if ((thunk[0] == 0xb8) && (thunk[3] == 0xea))
@@ -1156,7 +1154,7 @@
/* pop frame + args and push bp */
pData->old_ss_sp = pTask->teb->cur_stack + sizeof(STACK16FRAME)
+ 2 * sizeof(WORD);
- *(WORD *)PTR_SEG_TO_LIN(pData->old_ss_sp) = oldFrame->bp;
+ *(WORD *)MapSL(pData->old_ss_sp) = oldFrame->bp;
pData->stacktop = top;
pData->stackmin = ptr;
pData->stackbottom = ptr;
@@ -1168,14 +1166,14 @@
*/
copySize = oldFrame->bp - OFFSETOF(pData->old_ss_sp);
copySize += 3 * sizeof(WORD) + sizeof(STACK16FRAME);
- pTask->teb->cur_stack = PTR_SEG_OFF_TO_SEGPTR( seg, ptr - copySize );
+ pTask->teb->cur_stack = MAKESEGPTR( seg, ptr - copySize );
newFrame = THREAD_STACK16( pTask->teb );
/* Copy the stack frame and the local variables to the new stack */
memmove( newFrame, oldFrame, copySize );
newFrame->bp = ptr;
- *(WORD *)PTR_SEG_OFF_TO_LIN( seg, ptr ) = 0; /* clear previous bp */
+ *(WORD *)MapSL( MAKESEGPTR( seg, ptr ) ) = 0; /* clear previous bp */
}
@@ -1201,7 +1199,7 @@
/* Pop bp from the previous stack */
- BP_reg(context) = *(WORD *)PTR_SEG_TO_LIN(pData->old_ss_sp);
+ BP_reg(context) = *(WORD *)MapSL(pData->old_ss_sp);
pData->old_ss_sp += sizeof(WORD);
/* Switch back to the old stack */
@@ -1544,7 +1542,7 @@
break;
lpte->hNext = pTask->hNext;
}
- pInstData = (INSTANCEDATA *)PTR_SEG_OFF_TO_LIN( GlobalHandleToSel16(pTask->hInstance), 0 );
+ pInstData = MapSL( MAKESEGPTR( GlobalHandleToSel16(pTask->hInstance), 0 ) );
lpte->hTask = lpte->hNext;
lpte->hTaskParent = pTask->hParent;
lpte->hInst = pTask->hInstance;