Win32OperatingSystem.st
changeset 15983 294a6922be11
parent 15923 6bc82606b914
child 16279 1addd0eeec26
--- a/Win32OperatingSystem.st	Fri Feb 07 16:09:20 2014 +0100
+++ b/Win32OperatingSystem.st	Tue Feb 11 21:18:49 2014 +0100
@@ -4870,22 +4870,28 @@
     openFilenameStructureExternalAddress is an integer representing it's address"
 
     | rslt |
+
 %{  /* STACK: 32000*/
 
-    INT __address;
+    void *__address;
     int __rslt;
 
-    __address = __intVal(openFilenameStructureExternalAddress);
-    // do not cast to INT - will loose sign bit then!
-    __rslt = __STX_API_CALL1( "GetOpenFileName", (void *)GetOpenFileName, (void *)(__address));
-
-    if (__rslt == TRUE) {
-	rslt = true;
-    } else {
-	rslt = false;
-    }
-%}.
+    if (__isExternalAddressLike(openFilenameStructureExternalAddress)
+     || __isExternalBytesLike(openFilenameStructureExternalAddress)){ 
+        __address = __externalAddressVal(openFilenameStructureExternalAddress);
+        __rslt = __STX_API_CALL1( "GetOpenFileName", (void *)GetOpenFileName, __address);
+
+        if (__rslt == TRUE) {
+            rslt = true;
+        } else {
+            rslt = false;
+        }
+    }
+%}.
+    rslt isNil ifTrue:[ self primitiveFailed ].
     ^ rslt
+
+    "Modified (format): / 11-02-2014 / 21:18:02 / cg"
 !
 
 getSaveFilename: openFilenameStructureExternalAddress
@@ -4897,20 +4903,25 @@
 
 %{  /* STACK: 32000*/
 
-    INT __address;
+    void  *__address;
     int __rslt;
 
-    __address = __intVal(openFilenameStructureExternalAddress);
-    // do not cast to INT - will loose sign bit then!
-    __rslt = __STX_API_CALL1( "GetSaveFileName", (void *)GetSaveFileName, (void *)(__address));
-
-    if (__rslt == TRUE) {
-	rslt = true;
-    } else {
-	rslt = false;
-    }
-%}.
+    if (__isExternalAddressLike(openFilenameStructureExternalAddress)
+     || __isExternalBytesLike(openFilenameStructureExternalAddress)){ 
+        __address = __externalAddressVal(openFilenameStructureExternalAddress);
+        __rslt = __STX_API_CALL1( "GetSaveFileName", (void *)GetSaveFileName, __address);
+
+        if (__rslt == TRUE) {
+            rslt = true;
+        } else {
+            rslt = false;
+        }
+    }
+%}.
+    rslt isNil ifTrue:[ self primitiveFailed ].
     ^ rslt
+
+    "Modified: / 11-02-2014 / 21:18:20 / cg"
 ! !
 
 !Win32OperatingSystem class methodsFor:'file queries'!
@@ -17488,15 +17499,15 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.489 2014-01-29 16:08:17 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.490 2014-02-11 20:18:49 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.489 2014-01-29 16:08:17 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.490 2014-02-11 20:18:49 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Win32OperatingSystem.st,v 1.489 2014-01-29 16:08:17 stefan Exp $'
+    ^ '$Id: Win32OperatingSystem.st,v 1.490 2014-02-11 20:18:49 cg Exp $'
 
 ! !