OSDN Git Service

* autoload.cc (LoadDLLprime): Mask error code to low-order 16 bits.
authorcgf <cgf>
Wed, 2 Mar 2005 16:13:20 +0000 (16:13 +0000)
committercgf <cgf>
Wed, 2 Mar 2005 16:13:20 +0000 (16:13 +0000)
(noload): Preserve sign when returning error code.

winsup/cygwin/ChangeLog
winsup/cygwin/autoload.cc

index 2b2f1ca..5424793 100644 (file)
@@ -1,5 +1,10 @@
 2005-03-02  Christopher Faylor  <cgf@timesys.com>
 
+       * autoload.cc (LoadDLLprime): Mask error code to low-order 16 bits.
+       (noload): Preserve sign when returning error code.
+
+2005-03-02  Christopher Faylor  <cgf@timesys.com>
+
        * spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they
        had previously been SIG_DFL.
 
index 59c24f7..805b765 100644 (file)
@@ -89,7 +89,7 @@ _win32_" mangle (name, n) ":                          \n\
 1:movl         (2f),%eax                               \n\
   call         *(%eax)                                 \n\
 2:.long                ." #dllname "_info                      \n\
-  .long                (" #n "+" #notimp ") | " #err "<<16     \n\
+  .long                (" #n "+" #notimp ") | (((" #err ") & 0xffff) <<16)     \n\
   .asciz       \"" #name "\"                           \n\
   .text                                                        \n\
 ");
@@ -128,7 +128,7 @@ noload:                                                                     \n\
        pushl   %eax            # First argument                        \n\
        call    _SetLastError@4 # Set it                                \n\
        popl    %eax            # Get back argument                     \n\
-       shrl    $16,%eax        # return value in high order word       \n\
+       sarl    $16,%eax        # return value in high order word       \n\
        jmp     *%edx           # Return                                \n\
 1:                                                                     \n\
        movl    (%edx),%eax     # Handle value                          \n\