Fix string handling in get_combo_box_entry_text
authorDirk Hohndel <dirk@hohndel.org>
Fri, 17 Aug 2012 16:36:04 +0000 (09:36 -0700)
committerDirk Hohndel <dirk@hohndel.org>
Fri, 17 Aug 2012 16:36:04 +0000 (09:36 -0700)
Linus' code dropped the const qualifier from the start rating. While
fixing this I stared some more at get_combo_box_entry_text and realized
that the existing code could potentially change the "old" pointer and then
pass it to free(). Tsk-tsk-tsk.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
info.c

diff --git a/info.c b/info.c
index 5a620e751694a40ea8f1569a894ed6af4af6812a..0ee401488062aa3105850863bf15c1c8feaca8b0 100644 (file)
--- a/info.c
+++ b/info.c
@@ -43,7 +43,7 @@ static int text_changed(const char *old, const char *new)
                (!old && strcmp("",new));
 }
 
-static char *skip_space(char *str)
+static const char *skip_space(const char *str)
 {
        if (str) {
                while (isspace(*str))
@@ -60,13 +60,14 @@ static char *skip_space(char *str)
  * The "master" string is the string of the current dive - we only consider it
  * changed if the old string is either empty, or matches that master string.
  */
-static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp, char *master)
+static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp, const char *master)
 {
        char *old = *textp;
+       const char *old_text;
        const gchar *new;
        GtkEntry *entry;
 
-       old = skip_space(old);
+       old_text = skip_space(old);
        master = skip_space(master);
 
        /*
@@ -75,8 +76,8 @@ static char *get_combo_box_entry_text(GtkComboBoxEntry *combo_box, char **textp,
         * we're editing another dive's info that already had a
         * valid value).
         */
-       if (master && old)
-               if (strcmp(master, old))
+       if (master && old_text)
+               if (strcmp(master, old_text))
                        return NULL;
 
        entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo_box)));