[balsa/wip/gtk4: 182/351] address-book: set-status no longer takes ownership



commit 800b3046902f24404f86bb6edd461994b122f453
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Feb 17 18:47:13 2018 -0500

    address-book: set-status no longer takes ownership
    
    Change libbalsa_address_book_set_status() to take a const gchar *
    argument and copy it, instead of taking ownership. That makes it
    consistent with the other setters. All calls but one were actually using
    g_strdup() to create a string whose ownership could be taken.

 libbalsa/address-book-gpe.c  |   14 +++++++-------
 libbalsa/address-book-ldap.c |   19 +++++++------------
 libbalsa/address-book-osmo.c |    6 +++++-
 libbalsa/address-book.c      |    6 +++---
 libbalsa/address-book.h      |    3 ++-
 5 files changed, 24 insertions(+), 24 deletions(-)
---
diff --git a/libbalsa/address-book-gpe.c b/libbalsa/address-book-gpe.c
index a11abd2..15f6540 100644
--- a/libbalsa/address-book-gpe.c
+++ b/libbalsa/address-book-gpe.c
@@ -402,7 +402,7 @@ libbalsa_address_book_gpe_load(LibBalsaAddressBook * ab,
 
     if(r != SQLITE_OK) {
         printf("r=%d err=%s\n", r, err);
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
 #ifdef HAVE_SQLITE3
         sqlite3_free(err);
 #else                           /* HAVE_SQLITE3 */
@@ -457,13 +457,13 @@ libbalsa_address_book_gpe_add_address(LibBalsaAddressBook *ab,
     r = sqlite3_exec(ab_gpe->db, "insert into contacts_urn values (NULL)",
                      NULL, NULL, &err);
     if (r != SQLITE_OK) {
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
         sqlite3_free(err);
 #else                           /* HAVE_SQLITE3 */
     r = sqlite_exec(ab_gpe->db, "insert into contacts_urn values (NULL)",
                     NULL, NULL, &err);
     if (r != SQLITE_OK) {
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
         free(err);
 #endif                          /* HAVE_SQLITE3 */
         return LBABERR_CANNOT_WRITE;
@@ -578,7 +578,7 @@ libbalsa_address_book_gpe_remove_address(LibBalsaAddressBook *ab,
 
     err = db_delete_by_uid(ab_gpe->db, uid);
     if(err) {
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
 #ifdef HAVE_SQLITE3
         sqlite3_free(err);
 #else                           /* HAVE_SQLITE3 */
@@ -641,7 +641,7 @@ libbalsa_address_book_gpe_modify_address(LibBalsaAddressBook *ab,
 #ifdef HAVE_SQLITE3
     if ((r = sqlite3_exec(ab_gpe->db, "begin transaction",
                           NULL, NULL, &err)) != SQLITE_OK) {
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
         sqlite3_free(err);              /* failed, so soon!? */
         return LBABERR_CANNOT_WRITE;
     }
@@ -660,7 +660,7 @@ libbalsa_address_book_gpe_modify_address(LibBalsaAddressBook *ab,
 #else                           /* HAVE_SQLITE3 */
     if( (r=sqlite_exec(ab_gpe->db, "begin transaction",
                        NULL, NULL, &err)) != SQLITE_OK) {
-        libbalsa_address_book_set_status(ab, g_strdup(err));
+        libbalsa_address_book_set_status(ab, err);
         free(err); /* failed, so soon!? */
         return LBABERR_CANNOT_WRITE;
     }
@@ -707,7 +707,7 @@ libbalsa_address_book_gpe_modify_address(LibBalsaAddressBook *ab,
 #endif                          /* HAVE_SQLITE3 */
 
  rollback:
-    libbalsa_address_book_set_status(ab, g_strdup(err));
+    libbalsa_address_book_set_status(ab, err);
 #ifdef HAVE_SQLITE3
     sqlite3_free(err);
     sqlite3_exec(ab_gpe->db, "rollback transaction", NULL, NULL, NULL);
diff --git a/libbalsa/address-book-ldap.c b/libbalsa/address-book-ldap.c
index b5a5705..5a001d3 100644
--- a/libbalsa/address-book-ldap.c
+++ b/libbalsa/address-book-ldap.c
@@ -293,7 +293,7 @@ libbalsa_address_book_ldap_open_connection(LibBalsaAddressBookLdap * ab_ldap)
 
     ldap_initialize(&ab_ldap->directory, ab_ldap->host);
     if (ab_ldap->directory == NULL) { /* very unlikely... */
-        libbalsa_address_book_set_status(ab, g_strdup("Host not found"));
+        libbalsa_address_book_set_status(ab, "Host not found");
        return LDAP_SERVER_DOWN;
     }
     /* ignore error if the V3 LDAP cannot be set */
@@ -308,12 +308,11 @@ libbalsa_address_book_ldap_open_connection(LibBalsaAddressBookLdap * ab_ldap)
         if(result != LDAP_SUCCESS) {
             ldap_unbind_ext(ab_ldap->directory, NULL, NULL);
             ab_ldap->directory = NULL;
-            libbalsa_address_book_set_status(ab, g_strdup(ldap_err2string(result)));
+            libbalsa_address_book_set_status(ab, ldap_err2string(result));
             return result;
         }
 #else /* HAVE_LDAP_TLS */
-     libbalsa_address_book_set_status(ab,
-                                      _("TLS requested but not compiled in"));
+     libbalsa_address_book_set_status(ab, _("TLS requested but not compiled in"));
      return LDAP_INAPPRIOPRIATE_AUTH;
 #endif /* HAVE_LDAP_TLS */
     }
@@ -338,8 +337,7 @@ libbalsa_address_book_ldap_open_connection(LibBalsaAddressBookLdap * ab_ldap)
        result = ldap_set_option(ab_ldap->directory, LDAP_OPT_REFERRALS, (void *)LDAP_OPT_OFF);
 
     if (result != LDAP_SUCCESS) {
-        libbalsa_address_book_set_status(ab,
-                                         g_strdup(ldap_err2string(result)));
+        libbalsa_address_book_set_status(ab, ldap_err2string(result));
        ldap_unbind_ext(ab_ldap->directory, NULL, NULL);
        ab_ldap->directory = NULL;
     }
@@ -663,8 +661,7 @@ libbalsa_address_book_ldap_add_address(LibBalsaAddressBook *ab,
         case LDAP_SUCCESS: g_free(dn); return LBABERR_OK;
         case LDAP_ALREADY_EXISTS:
            g_free(dn);
-           libbalsa_address_book_set_status(ab,
-                                            g_strdup(ldap_err2string(rc)));
+           libbalsa_address_book_set_status(ab, ldap_err2string(rc));
            return LBABERR_DUPLICATE;
         case LDAP_SERVER_DOWN:
             libbalsa_address_book_ldap_close_connection(ab_ldap);
@@ -725,8 +722,7 @@ libbalsa_address_book_ldap_remove_address(LibBalsaAddressBook *ab,
         }
     } while(cnt++<1);
     g_free(dn);
-    libbalsa_address_book_set_status(ab,
-                                    g_strdup(ldap_err2string(rc)));
+    libbalsa_address_book_set_status(ab, ldap_err2string(rc));
     return LBABERR_CANNOT_WRITE;
 }
 
@@ -849,8 +845,7 @@ libbalsa_address_book_ldap_modify_address(LibBalsaAddressBook *ab,
         }
     } while(cnt++<1);
     g_free(dn);
-    libbalsa_address_book_set_status(ab,
-                                    g_strdup(ldap_err2string(rc)));
+    libbalsa_address_book_set_status(ab, ldap_err2string(rc));
     return LBABERR_CANNOT_WRITE;
 }
 
diff --git a/libbalsa/address-book-osmo.c b/libbalsa/address-book-osmo.c
index caa4943..4dad611 100644
--- a/libbalsa/address-book-osmo.c
+++ b/libbalsa/address-book-osmo.c
@@ -151,7 +151,11 @@ libbalsa_address_book_osmo_load(LibBalsaAddressBook                *ab,
 
                addresses = osmo_read_addresses(osmo, filter, &error);
                if (error != NULL) {
-                       libbalsa_address_book_set_status(ab, g_strdup_printf(_("Reading Osmo contacts failed: 
%s"), error->message));
+                        gchar *status =
+                            g_strdup_printf(_("Reading Osmo contacts failed: %s"),
+                                            error->message);
+                       libbalsa_address_book_set_status(ab, status);
+                        g_free(status);
                        g_error_free(error);
                        result = LBABERR_CANNOT_SEARCH;
                } else {
diff --git a/libbalsa/address-book.c b/libbalsa/address-book.c
index 70e446c..2351710 100644
--- a/libbalsa/address-book.c
+++ b/libbalsa/address-book.c
@@ -189,15 +189,15 @@ libbalsa_address_book_modify_address(LibBalsaAddressBook * ab,
     return res;
 }
 
-/* set_status takes over the string ownership */
 void
-libbalsa_address_book_set_status(LibBalsaAddressBook * ab, gchar *str)
+libbalsa_address_book_set_status(LibBalsaAddressBook * ab,
+                                 const gchar         * status)
 {
     LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
 
     g_return_if_fail(ab);
     g_free(priv->ext_op_code);
-    priv->ext_op_code = str;
+    priv->ext_op_code = g_strdup(status);
 }
 
 void
diff --git a/libbalsa/address-book.h b/libbalsa/address-book.h
index df75d80..8325d84 100644
--- a/libbalsa/address-book.h
+++ b/libbalsa/address-book.h
@@ -100,7 +100,8 @@ LibBalsaABErr libbalsa_address_book_modify_address(LibBalsaAddressBook *ab,
                                                    LibBalsaAddress *newval);
 
 /* set_status takes over the string ownership */
-void libbalsa_address_book_set_status(LibBalsaAddressBook * ab, gchar *str);
+void libbalsa_address_book_set_status(LibBalsaAddressBook * ab,
+                                      const gchar         * status);
 void libbalsa_address_book_save_config(LibBalsaAddressBook * ab,
                                       const gchar * prefix);
 void libbalsa_address_book_load_config(LibBalsaAddressBook * ab,


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