Win32 2.3.0.0 → 2.3.0.1
raw patch · 6 files changed
+30/−13 lines, 6 filesdep ~base
Dependency ranges changed: base
Files
- Graphics/Win32/Control.hsc +1/−1
- Graphics/Win32/GDI/HDC.hs +18/−3
- Graphics/Win32/Window.hsc +4/−2
- System/Win32/Registry.hsc +2/−2
- System/Win32/Types.hs +3/−3
- Win32.cabal +2/−2
Graphics/Win32/Control.hsc view
@@ -22,7 +22,7 @@ import System.Win32.Types import Graphics.Win32.Message -import Foreign hiding (unsafePerformIO)+import Foreign import System.IO.Unsafe ##include "windows_cconv.h"
Graphics/Win32/GDI/HDC.hs view
@@ -26,8 +26,21 @@ #include "windows_cconv.h" -----------------------------------------------------------------+{- Note [Overflow checking and fromIntegral]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Some windows APIs use the value 0x80000000 to represent failure return+codes. However, when GHC builds libraries with -XNegativeLiterals+enabled, it will fail in contexts where the type would suffer from+signed overflow - such as Int32. (minBound :: Int32 == 0x80000000)++Technically, the frontend is correct that the literal overflows in the+context it is used in. So instead, we use fromIntegral to convert the+literal from a Word32 to the necessary type. This isn't any less+efficient (fromIntegral is optimized away,) and conveys the idea we+simply want the same representational value.+-}+ setArcDirection :: HDC -> ArcDirection -> IO ArcDirection setArcDirection dc dir = failIfZero "SetArcDirection" $ c_SetArcDirection dc dir@@ -142,14 +155,16 @@ setTextCharacterExtra :: HDC -> Int -> IO Int setTextCharacterExtra dc extra =- failIf (== 0x80000000) "SetTextCharacterExtra" $+ -- See Note [Overflow checking and fromIntegral]+ failIf (== fromIntegral (0x80000000 :: Word32)) "SetTextCharacterExtra" $ c_SetTextCharacterExtra dc extra foreign import WINDOWS_CCONV unsafe "windows.h SetTextCharacterExtra" c_SetTextCharacterExtra :: HDC -> Int -> IO Int getTextCharacterExtra :: HDC -> IO Int getTextCharacterExtra dc =- failIf (== 0x80000000) "GetTextCharacterExtra" $ c_GetTextCharacterExtra dc+ -- See Note [Overflow checking and fromIntegral]+ failIf (== fromIntegral (0x80000000 :: Word32)) "GetTextCharacterExtra" $ c_GetTextCharacterExtra dc foreign import WINDOWS_CCONV unsafe "windows.h GetTextCharacterExtra" c_GetTextCharacterExtra :: HDC -> IO Int
Graphics/Win32/Window.hsc view
@@ -24,7 +24,7 @@ import Control.Monad import Data.Maybe-import Foreign hiding (unsafePerformIO)+import Foreign import System.IO.Unsafe ##include "windows_cconv.h"@@ -171,8 +171,10 @@ , wS_EX_PALETTEWINDOW = WS_EX_PALETTEWINDOW } + cW_USEDEFAULT :: Pos-cW_USEDEFAULT = #{const CW_USEDEFAULT}+-- See Note [Overflow checking and fromIntegral] in Graphics/Win32/GDI/HDC.hs+cW_USEDEFAULT = fromIntegral (#{const CW_USEDEFAULT} :: Word32) type Pos = Int
System/Win32/Registry.hsc view
@@ -65,7 +65,7 @@ import System.Win32.File import System.IO.Unsafe-import Foreign hiding (unsafePerformIO)+import Foreign ##include "windows_cconv.h" @@ -497,7 +497,7 @@ regSetStringValue :: HKEY -> String -> String -> IO () regSetStringValue hk key val = withTString val $ \ v ->- regSetValueEx hk key rEG_SZ v (length val * sizeOf (undefined::TCHAR))+ regSetValueEx hk key rEG_SZ v ((1+length val) * sizeOf (undefined::TCHAR)) regSetValueEx :: HKEY -> String -> RegValueType -> LPTSTR -> Int -> IO () regSetValueEx key subkey ty value value_len =
System/Win32/Types.hs view
@@ -21,7 +21,7 @@ ) where import Data.Maybe-import Foreign hiding (unsafePerformIO)+import Foreign import Foreign.C import Control.Exception import System.IO.Error@@ -238,11 +238,11 @@ ddwordToDwords :: DDWORD -> (DWORD,DWORD) ddwordToDwords n =- (fromIntegral (n `shiftR` bitSize (undefined::DWORD))+ (fromIntegral (n `shiftR` finiteBitSize (undefined :: DWORD)) ,fromIntegral (n .&. fromIntegral (maxBound :: DWORD))) dwordsToDdword:: (DWORD,DWORD) -> DDWORD-dwordsToDdword (hi,low) = (fromIntegral low) .|. (fromIntegral hi `shiftL`bitSize hi)+dwordsToDdword (hi,low) = (fromIntegral low) .|. (fromIntegral hi `shiftL` finiteBitSize hi) ---------------------------------------------------------------- -- Primitives
Win32.cabal view
@@ -1,5 +1,5 @@ name: Win32-version: 2.3.0.0+version: 2.3.0.1 license: BSD3 license-file: LICENSE author: Alastair Reid@@ -17,7 +17,7 @@ include/Win32Aux.h include/win32debug.h include/windows_cconv.h Library- build-depends: base >= 3 && < 5, bytestring+ build-depends: base >= 4.7 && < 5, bytestring ghc-options: -Wall -fno-warn-name-shadowing cc-options: -fno-strict-aliasing exposed-modules: