[libgda: 2/6] Fixing static variable in gda-meta-struct.c
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda: 2/6] Fixing static variable in gda-meta-struct.c
- Date: Tue, 20 Aug 2019 13:21:28 +0000 (UTC)
commit 9e55b282ccdfe3a617a7682a832e3bb9a56df1be
Author: Pavlo Solntsev <p sun fun gmail com>
Date: Thu Aug 15 13:49:03 2019 -0500
Fixing static variable in gda-meta-struct.c
libgda/gda-meta-struct.c | 36 ++++++++++++++++++++++++++----------
1 file changed, 26 insertions(+), 10 deletions(-)
---
diff --git a/libgda/gda-meta-struct.c b/libgda/gda-meta-struct.c
index 2ed4a3c2d..5f51fb518 100644
--- a/libgda/gda-meta-struct.c
+++ b/libgda/gda-meta-struct.c
@@ -36,6 +36,7 @@
* Main static functions
*/
static void gda_meta_struct_dispose (GObject *object);
+static void gda_meta_struct_finalize (GObject *object);
static void gda_meta_struct_set_property (GObject *object,
guint param_id,
@@ -58,6 +59,7 @@ typedef struct {
guint features;
gboolean auto_incement;
gchar *desc;
+ GdaSqlParser *parser;
} GdaMetaStructPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (GdaMetaStruct, gda_meta_struct, G_TYPE_OBJECT)
@@ -115,6 +117,7 @@ gda_meta_struct_class_init (GdaMetaStructClass *klass) {
/* virtual methods */
object_class->dispose = gda_meta_struct_dispose;
+ object_class->finalize = gda_meta_struct_finalize;
}
@@ -127,16 +130,16 @@ gda_meta_struct_init (GdaMetaStruct *mstruct) {
priv->index = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
priv->auto_incement = FALSE;
priv->desc = NULL;
+ priv->parser = gda_sql_parser_new ();
}
-
-
static void
-gda_meta_struct_dispose (GObject *object) {
+gda_meta_struct_dispose (GObject *object)
+{
GdaMetaStruct *mstruct;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GDA_IS_META_STRUCT (object));
+
+ g_assert_nonnull (object);
+ g_assert_true (GDA_IS_META_STRUCT (object));
mstruct = GDA_META_STRUCT (object);
GdaMetaStructPrivate *priv = gda_meta_struct_get_instance_private (mstruct);
@@ -161,6 +164,22 @@ gda_meta_struct_dispose (GObject *object) {
G_OBJECT_CLASS (gda_meta_struct_parent_class)->dispose (object);
}
+static void
+gda_meta_struct_finalize (GObject *object)
+{
+ g_assert_nonnull (object);
+ g_assert_true (GDA_IS_META_STRUCT (object));
+
+ GdaMetaStruct *mstruct;
+ mstruct = GDA_META_STRUCT (object);
+ GdaMetaStructPrivate *priv = gda_meta_struct_get_instance_private (mstruct);
+
+ g_object_unref (priv->parser);
+
+ /* parent class */
+ G_OBJECT_CLASS (gda_meta_struct_parent_class)->dispose (object);
+}
+
static void
gda_meta_struct_set_property (GObject *object,
guint param_id,
@@ -853,12 +872,9 @@ _meta_struct_complement (GdaMetaStruct *mstruct, GdaMetaDbObjectType type,
/* view's dependencies, from its definition */
if ((priv->features & GDA_META_STRUCT_FEATURE_VIEW_DEPENDENCIES) &&
mv->view_def && *mv->view_def) {
- static GdaSqlParser *parser = NULL;
GdaStatement *stmt;
const gchar *remain;
- if (!parser)
- parser = gda_sql_parser_new ();
- stmt = gda_sql_parser_parse_string (parser, mv->view_def, &remain, NULL);
+ stmt = gda_sql_parser_parse_string (priv->parser, mv->view_def, &remain, NULL);
if (stmt &&
((gda_statement_get_statement_type (stmt) == GDA_SQL_STATEMENT_SELECT) ||
(gda_statement_get_statement_type (stmt) == GDA_SQL_STATEMENT_COMPOUND))) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]