From a1d67b881b3b8107917d6632222284b5c92edcd9 Mon Sep 17 00:00:00 2001
From: Adrien Beraud <adrien.beraud@savoirfairelinux.com>
Date: Fri, 11 Aug 2017 12:43:42 -0400
Subject: [PATCH] python: fix invalid pointer access

---
 python/opendht.pyx | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/python/opendht.pyx b/python/opendht.pyx
index 870e10ed..87cb1c19 100644
--- a/python/opendht.pyx
+++ b/python/opendht.pyx
@@ -179,8 +179,11 @@ cdef class Query(object):
 
 cdef class Select(object):
     cdef cpp.Select _select
-    def __cinit__(self, str q_str=''):
-        self._select = cpp.Select(q_str.encode())
+    def __cinit__(self, str q_str=None):
+        if q_str:
+            self._select = cpp.Select(q_str.encode())
+        else:
+            self._select = cpp.Select()
     def __str__(self):
         return self._select.toString().decode()
     def isSatisfiedBy(self, Select os):
@@ -191,8 +194,11 @@ cdef class Select(object):
 
 cdef class Where(object):
     cdef cpp.Where _where
-    def __cinit__(self, str q_str=''):
-        self._where = cpp.Where(q_str.encode())
+    def __cinit__(self, str q_str=None):
+        if q_str:
+            self._where = cpp.Where(q_str.encode())
+        else:
+            self._where = cpp.Where()
     def __str__(self):
         return self._where.toString().decode()
     def isSatisfiedBy(self, Where where):
@@ -527,6 +533,8 @@ cdef class DhtRunner(_WithID):
         if get_cb:
             cb_obj = {'get':get_cb, 'done':done_cb, 'filter':filter}
             ref.Py_INCREF(cb_obj)
+            if where is None:
+                where = Where()
             self.thisptr.get().get(key._infohash, cpp.bindGetCb(get_callback, <void*>cb_obj),
                     cpp.bindDoneCb(done_callback, <void*>cb_obj),
                     cpp.nullptr, #filter implemented in the get_callback
@@ -654,4 +662,3 @@ cdef class Pht(object):
                 val,
                 cpp.bindDoneCbSimple(done_callback_simple, <void*>cb_obj)
         )
-
-- 
GitLab