Handle null pointers in rpy2py

Resolves #46

Change-Id: Iae4ad6d272d39d0caebd8173794b3b203c1075c0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e87038..add51c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
 # Version history
 
+- Fixed NULL warning in fetch functions
+
 ## 1.0.0
 
 - Simplified authorization process for accessing restricted data via the new `auth()` function
diff --git a/KorAPClient/__init__.py b/KorAPClient/__init__.py
index 784bbc0..b264f97 100644
--- a/KorAPClient/__init__.py
+++ b/KorAPClient/__init__.py
@@ -35,8 +35,13 @@
 
 robjects.conversion.set_conversion(robjects.default_converter + pandas2ri.converter + korapclient_converter)
 
-fix_lists_in_dataframes = robjects.default_converter
+fix_null_types = robjects.default_converter
 
+@fix_null_types.rpy2py.register(NULLType)
+def to_str(obj):
+    return ""
+
+fix_lists_in_dataframes = robjects.default_converter
 
 @fix_lists_in_dataframes.rpy2py.register(StrSexpVector)
 def to_str(obj):
diff --git a/KorAPClient/tests/test_korapclient.py b/KorAPClient/tests/test_korapclient.py
index 5cb2989..b2caa08 100644
--- a/KorAPClient/tests/test_korapclient.py
+++ b/KorAPClient/tests/test_korapclient.py
@@ -160,5 +160,17 @@
         self.assertEqual(len(q.slots['collectedMatches']), 220)
         self.assertIsInstance(q.slots['collectedMatches']['tokens.match'].iloc[0], str)
 
+    def test_null_strings_are_handled(self):
+        q = self.kcon.corpusQuery("Der", vc="corpusSigle=WPD17", metadataOnly=False).fetchNext()
+        matches = q.slots['collectedMatches']
+        self.assertFalse(
+            matches['tokens.left'].str.contains("rpy2.rinterface_lib.sexp.NULLType", na=False).any(),
+            "The string 'rpy2.rinterface_lib.sexp.NULLType' was found in tokens.left!"
+        )
+        self.assertFalse(
+            matches['tokens.right'].str.contains("rpy2.rinterface_lib.sexp.NULLType", na=False).any(),
+            "The string 'rpy2.rinterface_lib.sexp.NULLType' was found in tokens.right!"
+        )
+
 if __name__ == '__main__':
     unittest.main()