aboutsummaryrefslogtreecommitdiffstats
path: root/info.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2012-08-17 09:36:04 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-08-17 09:36:04 -0700
commitaab94d07ccb890caaa03cf220b442ea5ce228fc1 (patch)
tree4cc09fcaa7154b2991e092a0b4d5fab8446b09ce /info.c
parent70f903c457a3b82cdaa62e232124cdbba5c11bc5 (diff)
downloadsubsurface-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.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/info.c b/info.c
index 5a620e751..0ee401488 100644
--- 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)));