diff -r 11df3522154d -r 294a6922be11 Win32OperatingSystem.st --- 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 $' ! !