[gobject-introspection] Use the correct size when freeing unused info



commit 02afe18bbb7880118bc99ffaeaccdacfbb75a44d
Author: Sjoerd Simons <sjoerd luon net>
Date:   Wed Oct 19 23:26:35 2011 +0100

    Use the correct size when freeing unused info
    
    A GIBaseInfo struct can underneath either be GIRealInfo *or*
    GIUnresolvedInfo if the type is GI_INFO_TYPE_UNRESOLVED. So when we
    eventually free the structures slice use the correct struct type
    otherwise things get unhappy.

 girepository/gibaseinfo.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/girepository/gibaseinfo.c b/girepository/gibaseinfo.c
index bfb7743..48af5c2 100644
--- a/girepository/gibaseinfo.c
+++ b/girepository/gibaseinfo.c
@@ -253,7 +253,10 @@ g_base_info_unref (GIBaseInfo *info)
       if (rinfo->repository)
         g_object_unref (rinfo->repository);
 
-      g_slice_free (GIRealInfo, rinfo);
+      if (rinfo->type == GI_INFO_TYPE_UNRESOLVED)
+        g_slice_free (GIUnresolvedInfo, rinfo);
+      else
+        g_slice_free (GIRealInfo, rinfo);
     }
 }
 



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