diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2012-08-17 09:36:04 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-08-17 09:36:04 -0700 |
commit | aab94d07ccb890caaa03cf220b442ea5ce228fc1 (patch) | |
tree | 4cc09fcaa7154b2991e092a0b4d5fab8446b09ce /info.c | |
parent | 70f903c457a3b82cdaa62e232124cdbba5c11bc5 (diff) | |
download | subsurface-aab94d07ccb890caaa03cf220b442ea5ce228fc1.tar.gz |
Fix string handling in get_combo_box_entry_text
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>
Diffstat (limited to 'info.c')
-rw-r--r-- | info.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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))); |