Ulrich Weigand <[EMAIL PROTECTED]> wrote:
>I've now modified the CallTo16Register routines to save (some) register
>values possibly modified by the called 16-bit routine back into the
>CONTEXT86 structure. Saving *all* registers is difficult (or at least
>would create more overhead), so I decided to save only those registers
>typically modified: EAX, EBX, ECX, EDX, EBP, and ESP.
>
>This done, it is now possible to find out the proper number of popped
>arguments from the SP value in the CONTEXT86. I've updated the various
>flat thunk routines accordingly.
>
>Could you try out the appended patch, whether it fixes your problem?
Ulrich, thank you very much. Adobe PageMaker 6.52 is in a fully workable
state now. Page layout, fonts, images, metafiles - just all that I have
tested so far! CodeWeavers, time to call to Adobe?
Though very little patch should be applied after your one:
--- relay.c Mon Sep 11 13:42:06 2000
+++ relay.c Mon Sep 11 13:33:38 2000
@@ -341,7 +341,7 @@
{
CONTEXT86 *context = (CONTEXT86 *)ret_val;
- DPRINTF("CallTo16() ss:sp=%04x:%04x\n",
+ DPRINTF("CallTo16() ss:sp=%04x:%04x retval=0x%08x\n",
SELECTOROF(NtCurrentTeb()->cur_stack),
OFFSETOF(NtCurrentTeb()->cur_stack), ret_val);
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x BP=%04x SP=%04x\n",
Thank you again.
Dmitry.