From d7c6f1d025cb7b03a7d44625827a7e852df23e0e Mon Sep 17 00:00:00 2001 From: defanor Date: Fri, 23 Feb 2018 18:32:30 +0300 Subject: Fix Literal value datatype URI handling It should be an URI, not a string. --- Redland/MidLevel.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'Redland/MidLevel.hs') diff --git a/Redland/MidLevel.hs b/Redland/MidLevel.hs index c8e9aa6..e9f1993 100644 --- a/Redland/MidLevel.hs +++ b/Redland/MidLevel.hs @@ -289,10 +289,14 @@ nodeGetLiteralValueLanguage node = withForeignPtr node $ librdf_node_get_literal_value_language >=> maybeSharedCString -nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode -> IO (Maybe String) +nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode + -> IO (Maybe (ForeignPtr RedlandURI)) nodeGetLiteralValueDatatypeURI node = - withForeignPtr node $ - librdf_node_get_literal_value_datatype_uri >=> maybeSharedCString + withForeignPtr node $ \node' -> do + oldURI <- librdf_node_get_literal_value_datatype_uri node' + if oldURI == nullPtr + then pure Nothing + else Just <$> initialize (librdf_new_uri_from_uri oldURI) p_librdf_free_uri nodeGetLiteralValueIsWellFormedXML :: ForeignPtr RedlandNode -> IO Bool nodeGetLiteralValueIsWellFormedXML node = -- cgit v1.2.3