[libgda] Don't use freed memory in GdaMetaStruct!



commit bf6c9c7f84be2cf671a4632b57c4ad68dfe21f2e
Author: Vivien Malerba <malerba gnome-db org>
Date:   Mon Jan 18 21:35:53 2010 +0100

    Don't use freed memory in GdaMetaStruct!

 libgda/gda-meta-struct.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/libgda/gda-meta-struct.c b/libgda/gda-meta-struct.c
index c2300da..6e8adbd 100644
--- a/libgda/gda-meta-struct.c
+++ b/libgda/gda-meta-struct.c
@@ -312,11 +312,12 @@ compute_view_dependencies (GdaMetaStruct *mstruct, GdaMetaDbObject *view_dbobj,
 				tmp_obj = gda_meta_struct_complement (m2,
 								      GDA_META_DB_VIEW, NULL, NULL, vname, NULL);
 			gda_value_free (vname);
-			g_object_unref (m2);
 
-			if (!tmp_obj) 
+			if (!tmp_obj) {
 				/* could not find dependency */
+				g_object_unref (m2);
 				continue;
+			}
 
 			/* the dependency exists, and is identified by tmp_obj->obj_catalog, tmp_obj->obj_schema 
 			 * and tmp_obj->obj_name */
@@ -337,6 +338,7 @@ compute_view_dependencies (GdaMetaStruct *mstruct, GdaMetaDbObject *view_dbobj,
 						       tmp_obj->obj_schema, tmp_obj->obj_name);
 				g_hash_table_insert (mstruct->priv->index, str, ref_obj);
 			}
+			g_object_unref (m2);
 			g_assert (ref_obj);
 			gda_value_free (catalog);
 			gda_value_free (schema);



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