summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--gobject/gobjectmodule.c14
2 files changed, 13 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index eaf40e6..9751456 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-11-24 Paolo Borelli <pborelli@katamail.com>
+ * gobject/gobjectmodule.c (pyg_type_register): check for NULL before
+ dereferencing.
+
+2007-11-24 Paolo Borelli <pborelli@katamail.com>
+
* gobject/gobjectmodule.c (pyg_type_register): do not use a
potentially uninitialized variable. Bug #499334.
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 9d78bf8..b21087d 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -1301,7 +1301,7 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
const GInterfaceInfo *iinfo;
GInterfaceInfo iinfo_copy;
guint parent_interface_iter;
-
+
if (((PyTypeObject *) base)->tp_base != &PyGInterface_Type)
continue;
@@ -1321,8 +1321,6 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
continue;
iinfo = pyg_lookup_interface_info(itype);
- iinfo_copy = *iinfo;
- iinfo_copy.interface_data = class;
if (!iinfo) {
char *msg;
msg = g_strdup_printf("Interface type %s "
@@ -1332,6 +1330,9 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
g_free(msg);
continue;
}
+
+ iinfo_copy = *iinfo;
+ iinfo_copy.interface_data = class;
g_type_add_interface_static(instance_type, itype, &iinfo_copy);
}
} else
@@ -1392,7 +1393,7 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
const GInterfaceInfo *iinfo;
GInterfaceInfo iinfo_copy;
guint parent_interface_iter;
-
+
if (((PyTypeObject *) base)->tp_base != &PyGInterface_Type)
continue;
@@ -1413,8 +1414,6 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
}
iinfo = pyg_lookup_interface_info(itype);
- iinfo_copy = *iinfo;
- iinfo_copy.interface_data = class;
if (!iinfo) {
char *msg;
msg = g_strdup_printf("Interface type %s "
@@ -1424,6 +1423,9 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
g_free(msg);
continue;
}
+
+ iinfo_copy = *iinfo;
+ iinfo_copy.interface_data = class;
g_type_add_interface_static(instance_type, itype, &iinfo_copy);
}
} else