Bug 593322 - Fix unref of GIUnresolvedInfo instances
authorColin Walters <walters@verbum.org>
Fri, 4 Sep 2009 20:52:35 +0000 (16:52 -0400)
committerColin Walters <walters@verbum.org>
Fri, 4 Sep 2009 20:52:35 +0000 (16:52 -0400)
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>

girepository/ginfo.c

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