diff options
author | defanor <defanor@uberspace.net> | 2018-04-22 02:26:26 +0300 |
---|---|---|
committer | defanor <defanor@uberspace.net> | 2018-04-22 02:26:26 +0300 |
commit | f9d699facc2a48022d44a67b6ef8eb76a6ca1233 (patch) | |
tree | 982cb57ef58f0d57360e9826599039919b81e162 /Redland/Util.hs | |
parent | 65668579e840b1587f7b70d0e44e11bc8ba08369 (diff) |
Fix an occasional segfault
Not sure why it happens, but calls to raptor_free_uri via finalizers
led to segfaults, and it helped to call a finalizer manually from
statementToTriple.
Diffstat (limited to 'Redland/Util.hs')
-rw-r--r-- | Redland/Util.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Redland/Util.hs b/Redland/Util.hs index 0940cfc..c7862be 100644 --- a/Redland/Util.hs +++ b/Redland/Util.hs @@ -84,7 +84,7 @@ redlandNodeToNode rn = do (_, Just t) -> Just . XMLSchema <$> uriAsString t _ -> pure Nothing pure $ LiteralNode litVal nType - _ -> ResourceNode <$> (nodeGetURI rn >>= uriAsString) + _ -> ResourceNode <$> withNew (nodeGetURI rn) uriAsString -- | A conversion function. nodeToRedlandNode :: ForeignPtr RedlandWorld @@ -186,7 +186,11 @@ statementToTriple statement = do componentToTriple f = do c <- f statement case c of - Just c' -> Just <$> redlandNodeToNode c' + Just c' -> do + n <- redlandNodeToNode c' + -- segfaulting without finalization here, not sure why. + finalizeForeignPtr c' + pure $ Just n Nothing -> pure Nothing -- | A conversion function. |