packages feed

haskell-gi-base 0.20.1 → 0.20.2

raw patch · 5 files changed

+33/−15 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.GI.Base.BasicConversions: cstringToByteString :: CString -> IO ByteString
+ Data.GI.Base.BasicConversions: cstringToByteString :: HasCallStack => CString -> IO ByteString
- Data.GI.Base.BasicConversions: cstringToString :: CString -> IO String
+ Data.GI.Base.BasicConversions: cstringToString :: HasCallStack => CString -> IO String
- Data.GI.Base.BasicConversions: cstringToText :: CString -> IO Text
+ Data.GI.Base.BasicConversions: cstringToText :: HasCallStack => CString -> IO Text
- Data.GI.Base.BasicConversions: unpackFileNameArrayWithLength :: Integral a => a -> Ptr CString -> IO [String]
+ Data.GI.Base.BasicConversions: unpackFileNameArrayWithLength :: (HasCallStack, Integral a) => a -> Ptr CString -> IO [String]
- Data.GI.Base.BasicConversions: unpackUTF8CArrayWithLength :: Integral a => a -> Ptr CString -> IO [Text]
+ Data.GI.Base.BasicConversions: unpackUTF8CArrayWithLength :: (HasCallStack, Integral a) => a -> Ptr CString -> IO [Text]
- Data.GI.Base.BasicConversions: unpackZeroTerminatedFileNameArray :: Ptr CString -> IO [String]
+ Data.GI.Base.BasicConversions: unpackZeroTerminatedFileNameArray :: HasCallStack => Ptr CString -> IO [String]
- Data.GI.Base.BasicConversions: unpackZeroTerminatedUTF8CArray :: Ptr CString -> IO [Text]
+ Data.GI.Base.BasicConversions: unpackZeroTerminatedUTF8CArray :: HasCallStack => Ptr CString -> IO [Text]
- Data.GI.Base.Utils: checkUnexpectedNothing :: Text -> IO (Maybe a) -> IO a
+ Data.GI.Base.Utils: checkUnexpectedNothing :: HasCallStack => Text -> IO (Maybe a) -> IO a

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+### 0.20.2+++ Fix fromGVariant for empty arrays, see [#91](https://github.com/haskell-gi/haskell-gi/issues/91) for details.+ ### 0.20.1  + Add Data.GI.Base.CallStack, abstracting (and backporting to the
Data/GI/Base/BasicConversions.hsc view
@@ -1,4 +1,4 @@-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE ScopedTypeVariables, ConstraintKinds, FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} module Data.GI.Base.BasicConversions     ( gflagsToWord@@ -75,6 +75,7 @@ import qualified Data.ByteString.Internal as BI import Data.Maybe (fromMaybe) import Data.Text (Text)+import qualified Data.Text as T import qualified Data.Text.Foreign as TF  import Foreign.Ptr (Ptr, plusPtr, nullPtr, nullFunPtr, castPtr)@@ -87,9 +88,11 @@ import Data.Bits (Bits, (.|.), (.&.), shift)  import Data.GI.Base.BasicTypes+import Data.GI.Base.CallStack (HasCallStack) import Data.GI.Base.GHashTable (GEqualFunc, GHashFunc) import Data.GI.Base.ManagedPtr (copyBoxedPtr)-import Data.GI.Base.Utils (allocBytes, callocBytes, memcpy, freeMem)+import Data.GI.Base.Utils (allocBytes, callocBytes, memcpy, freeMem,+                           checkUnexpectedReturnNULL)  #include <glib-object.h> @@ -370,7 +373,7 @@                                poke ptr cstring                                fill (ptr `plusPtr` sizeOf cstring) xs -unpackZeroTerminatedUTF8CArray :: Ptr CString -> IO [Text]+unpackZeroTerminatedUTF8CArray :: HasCallStack => Ptr CString -> IO [Text] unpackZeroTerminatedUTF8CArray listPtr = go listPtr     where go :: Ptr CString -> IO [Text]           go ptr = do@@ -380,7 +383,8 @@                else (:) <$> cstringToText cstring                         <*> go (ptr `plusPtr` sizeOf cstring) -unpackUTF8CArrayWithLength :: Integral a => a -> Ptr CString -> IO [Text]+unpackUTF8CArrayWithLength :: (HasCallStack, Integral a) =>+                              a -> Ptr CString -> IO [Text] unpackUTF8CArrayWithLength n ptr = go (fromIntegral n) ptr     where go       :: Int -> Ptr CString -> IO [Text]           go 0 _   = return []@@ -414,7 +418,7 @@                                poke ptr cstring                                fill (ptr `plusPtr` sizeOf cstring) xs -unpackZeroTerminatedFileNameArray :: Ptr CString -> IO [String]+unpackZeroTerminatedFileNameArray :: HasCallStack => Ptr CString -> IO [String] unpackZeroTerminatedFileNameArray listPtr = go listPtr     where go :: Ptr CString -> IO [String]           go ptr = do@@ -424,7 +428,7 @@                else (:) <$> cstringToString cstring                         <*> go (ptr `plusPtr` sizeOf cstring) -unpackFileNameArrayWithLength :: Integral a =>+unpackFileNameArrayWithLength :: (HasCallStack, Integral a) =>                                  a -> Ptr CString -> IO [String] unpackFileNameArrayWithLength n ptr = go (fromIntegral n) ptr     where go       :: Int -> Ptr CString -> IO [String]@@ -442,8 +446,10 @@ stringToCString :: String -> IO CString stringToCString str = withCString str g_strdup -cstringToString :: CString -> IO String-cstringToString = peekCString+cstringToString :: HasCallStack => CString -> IO String+cstringToString cstr = do+  checkUnexpectedReturnNULL (T.pack "cstringToString") cstr+  peekCString cstr  foreign import ccall "g_strndup" g_strndup ::     CString -> #{type gsize} -> IO CString@@ -463,8 +469,9 @@ foreign import ccall "strlen" c_strlen ::     CString -> IO (CSize) -cstringToText :: CString -> IO Text+cstringToText :: HasCallStack => CString -> IO Text cstringToText cstr = do+  checkUnexpectedReturnNULL (T.pack "cstringToText") cstr   len <- c_strlen cstr   let cstrlen = (cstr, fromIntegral len)   TF.peekCStringLen cstrlen@@ -472,8 +479,10 @@ byteStringToCString :: ByteString -> IO CString byteStringToCString bs = B.useAsCString bs g_strdup -cstringToByteString :: CString -> IO ByteString-cstringToByteString = B.packCString+cstringToByteString :: HasCallStack => CString -> IO ByteString+cstringToByteString cstr = do+  checkUnexpectedReturnNULL (T.pack "cstringToByteString") cstr+  B.packCString cstr  packPtrArray :: [Ptr a] -> IO (Ptr (Ptr a)) packPtrArray items = do
Data/GI/Base/GVariant.hsc view
@@ -636,8 +636,13 @@ gvariant_get_children :: (Ptr GVariant) -> IO [GVariant] gvariant_get_children vptr = do       n_children <- g_variant_n_children vptr-      mapM ((g_variant_get_child_value vptr) >=> wrapGVariantPtr)-               [0..(n_children-1)]+      -- n_children is an unsigned type (Word64 in 64 bit+      -- architectures), so if it is 0 and we substract one we would+      -- wrap around to 2^64-1.+      if n_children /= 0+        then mapM ((g_variant_get_child_value vptr) >=> wrapGVariantPtr)+             [0..(n_children-1)]+        else return []  instance IsGVariant a => IsGVariant (Maybe a) where     toGVariant   = gvariantFromMaybe
Data/GI/Base/Utils.hsc view
@@ -193,7 +193,7 @@  -- | An annotated version of `fromJust`, which raises a -- `UnexpectedNullPointerReturn` in case it encounters a `Nothing`.-checkUnexpectedNothing :: T.Text -> IO (Maybe a) -> IO a+checkUnexpectedNothing :: HasCallStack => T.Text -> IO (Maybe a) -> IO a checkUnexpectedNothing fnName action = do   result <- action   case result of
haskell-gi-base.cabal view
@@ -1,5 +1,5 @@ name:                haskell-gi-base-version:             0.20.1+version:             0.20.2 synopsis:            Foundation for libraries generated by haskell-gi description:         Foundation for libraries generated by haskell-gi homepage:            https://github.com/haskell-gi/haskell-gi-base