summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2012-09-18 19:51:48 -0400
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-09-18 20:25:45 -0400
commitd14932058f191de2a812a9b3b9ad87c5febd2b3e (patch)
treea903417419c3bb80a8dde5b6b708bda5bf567a38
parentf73e5b726808675ec3a02fe57f063b666e0706ac (diff)
downloadsubsurface-d14932058f191de2a812a9b3b9ad87c5febd2b3e.tar.gz
Fix some of the problems reported by cppcheck
Thanks to Christian for running the static code analysis tool against subsurface... There were some false positives, a few style issues that I'll ignore for now, and two actual potential bugs. First: Don't check unsigned variables for < 0 This has been around for a while and we are lucky that while technically a bug it still works as expected. Passing a negative idx simply turns it into a very large unsigned integer which then fails the > dive_table.nr test. So it still gets a NULL returned. A bug? Yes. Critical? No. Mismatched allocation and free This is an actual bug that potentially could cause issues. We allocate memory with malloc and free it with g_free. Not good. Reported-by: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.c2
-rw-r--r--dive.h2
-rw-r--r--divelist.c2
-rw-r--r--equipment.c6
-rw-r--r--gtk-gui.c2
5 files changed, 7 insertions, 7 deletions
diff --git a/dive.c b/dive.c
index 54784cdba..52ec64517 100644
--- a/dive.c
+++ b/dive.c
@@ -277,7 +277,7 @@ static void sanitize_gasmix(struct gasmix *mix)
/* Sane mix? */
if (o2 <= 1000 && he <= 1000 && o2+he <= 1000)
return;
- fprintf(stderr, "Odd gasmix: %d O2 %d He\n", o2, he);
+ fprintf(stderr, "Odd gasmix: %u O2 %u He\n", o2, he);
memset(mix, 0, sizeof(*mix));
}
diff --git a/dive.h b/dive.h
index d756eba15..e443ce965 100644
--- a/dive.h
+++ b/dive.h
@@ -366,7 +366,7 @@ extern struct dive_table dive_table;
extern int selected_dive;
#define current_dive (get_dive(selected_dive))
-static inline struct dive *get_dive(unsigned int nr)
+static inline struct dive *get_dive(int nr)
{
if (nr >= dive_table.nr || nr < 0)
return NULL;
diff --git a/divelist.c b/divelist.c
index 514fdfed1..f032e6243 100644
--- a/divelist.c
+++ b/divelist.c
@@ -110,7 +110,7 @@ void dump_selection(void)
int i;
struct dive *dive;
- printf("currently selected are %d dives:", amount_selected);
+ printf("currently selected are %u dives:", amount_selected);
for_each_dive(i, dive) {
if (dive->selected)
printf(" %d", i);
diff --git a/equipment.c b/equipment.c
index adfb02989..fc31d9729 100644
--- a/equipment.c
+++ b/equipment.c
@@ -96,13 +96,13 @@ static void convert_volume_pressure(int ml, int mbar, double *v, double *p)
volume *= bar_to_atm(mbar / 1000.0);
}
- if (output_units.pressure == PSI) {
+ if (output_units.pressure == PSI)
pressure = mbar_to_PSI(mbar);
- } else
+ else
pressure = mbar / 1000.0;
+ *p = pressure;
}
*v = volume;
- *p = pressure;
}
static int convert_weight(int grams, double *m)
diff --git a/gtk-gui.c b/gtk-gui.c
index d797b8d56..167517ebe 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -226,7 +226,7 @@ static gboolean ask_save_changes()
"You have unsaved changes to file: %s \nWould you like to save those before closing the datafile?",
existing_filename);
label = gtk_label_new (label_text);
- g_free(label_text);
+ free(label_text);
}
gtk_container_add (GTK_CONTAINER (content), label);
gtk_widget_show_all (dialog);