summaryrefslogtreecommitdiffstats
path: root/gobject/pygflags.c
diff options
context:
space:
mode:
authorJohn Finlay <finlay@src.gnome.org>2006-07-25 04:24:14 +0000
committerJohn Finlay <finlay@src.gnome.org>2006-07-25 04:24:14 +0000
commit7ae5b1c7b2928bc4685d3493f5686f7aefa3f30b (patch)
tree22c875d7cfd467ca3ec05aace9ca80e49388778d /gobject/pygflags.c
parent75ac5ae28abdac185875941a002d085abbeb3961 (diff)
downloadpygobject-7ae5b1c7b2928bc4685d3493f5686f7aefa3f30b.tar.gz
pygobject-7ae5b1c7b2928bc4685d3493f5686f7aefa3f30b.tar.xz
pygobject-7ae5b1c7b2928bc4685d3493f5686f7aefa3f30b.zip
Avoid segfault when g_flags_get_first_value returns NULL.
* gobject/pygflags.c (pyg_flags_get_first_value_name) (pyg_flags_get_first_value_nick): Avoid segfault when g_flags_get_first_value returns NULL.
Diffstat (limited to 'gobject/pygflags.c')
-rw-r--r--gobject/pygflags.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gobject/pygflags.c b/gobject/pygflags.c
index 2fcfa10..dc4b03c 100644
--- a/gobject/pygflags.c
+++ b/gobject/pygflags.c
@@ -323,8 +323,12 @@ pyg_flags_get_first_value_name(PyGFlags *self, void *closure)
flags_class = g_type_class_ref(self->gtype);
g_assert(G_IS_FLAGS_CLASS(flags_class));
flags_value = g_flags_get_first_value(flags_class, self->parent.ob_ival);
- retval = PyString_FromString(flags_value->value_name);
-
+ if (flags_value)
+ retval = PyString_FromString(flags_value->value_name);
+ else {
+ retval = Py_None;
+ PY_INCREF(Py_None);
+ }
g_type_class_unref(flags_class);
return retval;
@@ -341,7 +345,12 @@ pyg_flags_get_first_value_nick(PyGFlags *self, void *closure)
g_assert(G_IS_FLAGS_CLASS(flags_class));
flags_value = g_flags_get_first_value(flags_class, self->parent.ob_ival);
- retval = PyString_FromString(flags_value->value_nick);
+ if (flags_value)
+ retval = PyString_FromString(flags_value->value_nick);
+ else {
+ retval = Py_None;
+ PY_INCREF(Py_None);
+ }
g_type_class_unref(flags_class);
return retval;