[pygobject] Use G_IS_VALUE for checking return values in closure marshaling



commit dab0c09f1996e124ca98334e5aea0852904b44b5
Author: Simon Feltman <sfeltman src gnome org>
Date:   Sun Sep 1 17:49:09 2013 -0700

    Use G_IS_VALUE for checking return values in closure marshaling
    
    Replace return_value argument NULL checks in GClosureMarshal
    implementations with G_IS_VALUE. This checks both NULL and
    validity of the value (!= G_TYPE_INVALID). This is needed
    because GLib can pass either NULL or an invalid value based
    on whether or not G_ENABLE_DEBUG is set.
    See: https://bugzilla.gnome.org/show_bug.cgi?id=707249
    
    https://bugzilla.gnome.org/show_bug.cgi?id=707170

 gi/_gobject/pygtype.c    |    4 ++--
 gi/pygi-signal-closure.c |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
---
diff --git a/gi/_gobject/pygtype.c b/gi/_gobject/pygtype.c
index 0b920f6..9dc1153 100644
--- a/gi/_gobject/pygtype.c
+++ b/gi/_gobject/pygtype.c
@@ -1362,7 +1362,7 @@ pyg_closure_marshal(GClosure *closure,
        goto out;
     }
 
-    if (return_value && pyg_value_from_pyobject(return_value, ret) != 0) {
+    if (G_IS_VALUE(return_value) && pyg_value_from_pyobject(return_value, ret) != 0) {
        /* If we already have an exception set, use that, otherwise set a
         * generic one */
        if (!PyErr_Occurred())
@@ -1543,7 +1543,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
     }
     Py_DECREF(method);
     Py_DECREF(params);
-    if (return_value)
+    if (G_IS_VALUE(return_value))
        pyg_value_from_pyobject(return_value, ret);
     Py_DECREF(ret);
     pyglib_gil_state_release(state);
diff --git a/gi/pygi-signal-closure.c b/gi/pygi-signal-closure.c
index 20c6b56..bcd1320 100644
--- a/gi/pygi-signal-closure.c
+++ b/gi/pygi-signal-closure.c
@@ -155,7 +155,7 @@ pygi_signal_closure_marshal(GClosure *closure,
         goto out;
     }
 
-    if (return_value && pyg_value_from_pyobject(return_value, ret) != 0) {
+    if (G_IS_VALUE(return_value) && pyg_value_from_pyobject(return_value, ret) != 0) {
         PyErr_SetString(PyExc_TypeError,
                         "can't convert return value to desired type");
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]