summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Băluț <alexandru.balut@gmail.com>2020-01-20 21:30:14 +0100
committerAlexandru Băluț <alexandru.balut@gmail.com>2020-01-20 21:30:44 +0100
commitc10c9856e4121b048f55a2c7b98a6fd8e8683c23 (patch)
tree9ecd8a7a2dd0548bed7e1904d4313e53fc376090
parentd8c63d54a7496d8e25d5b0095e0095f8a8c5b802 (diff)
downloadpygobject-c10c9856e4121b048f55a2c7b98a6fd8e8683c23.tar.gz
pygobject-object: Avoid checking whether NULL is floating
This issue was introduced in a102f046a178472278522e3e9d7c0b40ecd52ade.
-rw-r--r--gi/pygobject-object.c4
-rw-r--r--tests/regressextra.c20
-rw-r--r--tests/test_signal.py2
3 files changed, 25 insertions, 1 deletions
diff --git a/gi/pygobject-object.c b/gi/pygobject-object.c
index d411afbd..76b18ccc 100644
--- a/gi/pygobject-object.c
+++ b/gi/pygobject-object.c
@@ -1947,7 +1947,9 @@ pygobject_emit(PyGObject *self, PyObject *args)
if (G_VALUE_HOLDS_OBJECT (&ret)) {
GObject *obj = g_value_get_object (&ret);
- was_floating = g_object_is_floating (obj);
+ if (obj != NULL && G_IS_OBJECT(obj)) {
+ was_floating = g_object_is_floating (obj);
+ }
}
py_ret = pyg_value_as_pyobject(&ret, TRUE);
if (!was_floating)
diff --git a/tests/regressextra.c b/tests/regressextra.c
index 7e53373a..e0ad3938 100644
--- a/tests/regressextra.c
+++ b/tests/regressextra.c
@@ -343,6 +343,7 @@ enum
{
SIGNAL_0,
ACTION_SIGNAL,
+ ACTION2_SIGNAL,
LAST_SIGNAL
};
@@ -356,6 +357,12 @@ regress_test_action_do_action (RegressTestAction *self)
return ret;
}
+static RegressTestAction *
+regress_test_action_do_action2 (RegressTestAction *self)
+{
+ return NULL;
+}
+
static void
regress_test_action_init (RegressTestAction *self)
{
@@ -375,4 +382,17 @@ static void regress_test_action_class_init (RegressTestActionClass *klass)
G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_CALLBACK (regress_test_action_do_action), NULL, NULL,
NULL, regress_test_action_get_type (), 0);
+
+ /**
+ * RegressTestAction::action2:
+ *
+ * Another action signal.
+ *
+ * Returns: (transfer full): another #RegressTestAction
+ */
+ regress_test_action_signals[ACTION2_SIGNAL] =
+ g_signal_new_class_handler ("action2",
+ G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_CALLBACK (regress_test_action_do_action2), NULL, NULL,
+ NULL, regress_test_action_get_type (), 0);
}
diff --git a/tests/test_signal.py b/tests/test_signal.py
index edc970fc..68592c5d 100644
--- a/tests/test_signal.py
+++ b/tests/test_signal.py
@@ -1247,6 +1247,8 @@ class TestIntrospectedSignals(unittest.TestCase):
obj = Regress.TestAction()
other_obj = obj.emit('action')
self.assertEqual(other_obj.__grefcount__, 1)
+ other_obj2 = obj.emit('action2')
+ self.assertIsNone(other_obj2)
class TestIntrospectedSignalsIssue158(unittest.TestCase):