difforig Win32-API-0.58

diff -u  Win32-API-0.58/API.xs.orig
--- Win32-API-0.58/API.xs.orig	2008-10-16 21:33:11.000000000 +0200
+++ Win32-API-0.58/API.xs	2009-06-28 14:12:33.015625000 +0200
@@ -609,15 +609,19 @@
 #if (defined(_MSC_VER) || defined(__BORLANDC__))
 		/*
 			_asm {
-			call    dword ptr [ApiFunctionFloat]
-			fstp    qword ptr [fReturn]
+			call    dword ptr [ApiFunctionDouble]
+			fstp    qword ptr [dReturn]
 		}
 		*/
-	    fReturn = ApiFunctionDouble();
+	    dReturn = ApiFunctionDouble();
 #elif (defined(__GNUC__))
-	asm ("call *%0"::"g"(ApiFunctionDouble));
-	asm ("fstpl %0"::"g"(fReturn));
-    /* XST_mNV(0, (float) fReturn); */
+	    dReturn = ApiFunctionDouble();
+            /*
+              asm ("call *%0"::"g" (ApiFunctionDouble));
+              asm ("fstpl %st(0)");
+              asm ("movl %0,(%esp)");
+            */
+	/* XST_mNV(0, (double) dReturn); */
 #endif
 #ifdef WIN32_API_DEBUG
        printf("(XS)Win32::API::Call: ApiFunctionDouble returned %f\n", dReturn);
@@ -741,8 +745,12 @@
     	}
     	/*  XSRETURN_NV(dReturn); */
 #elif (defined(__GNUC__))
-	asm ("call *%0"::"g"(ApiFunctionDouble));
-	asm ("fstpl %0"::"g"(dReturn));
+        dReturn = ApiFunctionDouble();
+        /*
+              asm ("call *%0"::"g" (ApiFunctionDouble));
+              asm ("fstpl %st(0)");
+              asm ("movl %0,(%esp)");
+        */
 	/* XST_mNV(0, dReturn); */
 #endif
         break;