From: Andrea Zagli Date: Wed, 29 Jul 2015 07:25:41 +0000 (+0200) Subject: Memory leak. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=f94644bdd647dce23547e25e1265613137046e51;p=solipa%2Flibsolipa Memory leak. --- diff --git a/src/allegato.c b/src/allegato.c index fc9f40b..16a56b3 100644 --- a/src/allegato.c +++ b/src/allegato.c @@ -307,6 +307,15 @@ solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql, g_return_val_if_fail (GDA_IS_CONNECTION (gda_con), FALSE); parser = gda_connection_create_parser (gda_con); + if (parser == NULL) + { + parser = gda_sql_parser_new (); + } + if (parser == NULL) + { + g_warning ("Errore nella creazione del parser sql."); + return FALSE; + } error = NULL; stmt = gda_sql_parser_parse_string (parser, sql, NULL, &error); @@ -319,6 +328,8 @@ solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql, } gda_statement_get_parameters (stmt, &plist, NULL); + gda_connection_begin_transaction (gda_con, NULL, 0, NULL); + param = gda_set_get_holder (plist, blob_field_name); value = gda_value_new_blob_from_file (percorso); error = NULL; @@ -326,6 +337,8 @@ solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql, { g_object_unref (plist); + gda_connection_rollback_transaction (gda_con, NULL, NULL); + /* TODO error */ g_warning ("Errore nell'impostare il blob: %s.", error != NULL && error->message != NULL ? error->message : "nessun dettaglio"); @@ -341,13 +354,15 @@ solipa_allegato_salva_in_db (GdaConnection *gda_con, const gchar *sql, if (error != NULL) { + gda_connection_rollback_transaction (gda_con, NULL, NULL); + /* TODO error */ g_warning ("Errore nell'esecuzione dello statement di aggiornamento del blob: %s.", error != NULL && error->message != NULL ? error->message : "nessun dettaglio"); return FALSE; } + gda_connection_commit_transaction (gda_con, NULL, NULL); } - gda_value_free (value); return TRUE; }