class: Win32OperatingSystem
changed:
#getOpenFilename:
#getSaveFilename:
check for argument being an externalAddress;
do not accept integers.
--- 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 $'
! !