Bug 593322 - Fix unref of GIUnresolvedInfo instances

We are treating GIUnresolvedInfo as a GIBaseInfo, but the structures
had drifted out of sync.  Add a repository pointer and bring them
back into sync.

Based on a report and patch from Jan Hudec <bulb@ucw.cz>
This commit is contained in:
Colin Walters 2009-09-04 16:52:35 -04:00
parent 1735ebde9a
commit 5f6b975d87

View File

@ -30,21 +30,28 @@
struct _GIBaseInfo struct _GIBaseInfo
{ {
/* Keep this part in sync with GIUnresolvedInfo below */
gint type; gint type;
gint ref_count; gint ref_count;
GIRepository *repository; GIRepository *repository;
GIBaseInfo *container; GIBaseInfo *container;
/* Resolved specific */
GTypelib *typelib; GTypelib *typelib;
guint32 offset; guint32 offset;
}; };
struct _GIUnresolvedInfo struct _GIUnresolvedInfo
{ {
/* Keep this part in sync with GIBaseInfo above */
gint type; gint type;
gint ref_count; gint ref_count;
GIRepository *repository;
GIBaseInfo *container; GIBaseInfo *container;
/* Unresolved specific */
const gchar *name; const gchar *name;
const gchar *namespace; const gchar *namespace;
}; };
@ -196,6 +203,7 @@ g_info_from_entry (GIRepository *repository,
unresolved->type = GI_INFO_TYPE_UNRESOLVED; unresolved->type = GI_INFO_TYPE_UNRESOLVED;
unresolved->ref_count = 1; unresolved->ref_count = 1;
unresolved->repository = repository;
unresolved->container = NULL; unresolved->container = NULL;
unresolved->name = name; unresolved->name = name;
unresolved->namespace = namespace; unresolved->namespace = namespace;