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.


Reply via email to