summaryrefslogtreecommitdiffstats
path: root/smtk-import/smartrak.c
diff options
context:
space:
mode:
authorGravatar Salvador Cuñat <salvador.cunat@gmail.com>2017-04-02 23:30:24 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-04-04 10:54:55 -0700
commit4864ea56cbaa694ed237e854de2cfa1407fc18c4 (patch)
tree93c728a7726c9225865614d20d1aface021a9a4a /smtk-import/smartrak.c
parent8c94fa2676dad64ae2a45329cfcdf8073760c6f5 (diff)
downloadsubsurface-4864ea56cbaa694ed237e854de2cfa1407fc18c4.tar.gz
smtk-import Fix wreck data import
It was assumed that every data field in a wreck table was filled or zeroed. This assumption is actually false, so this patch adds testing for the existence of strings before working with them. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
Diffstat (limited to 'smtk-import/smartrak.c')
-rw-r--r--smtk-import/smartrak.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/smtk-import/smartrak.c b/smtk-import/smartrak.c
index c7fadacf5..36eabed0b 100644
--- a/smtk-import/smartrak.c
+++ b/smtk-import/smartrak.c
@@ -266,24 +266,29 @@ static void smtk_wreck_site(MdbHandle *mdb, char *site_idx, struct dive_site *ds
/* Begin parsing. Write strings to notes only if available.*/
while (mdb_fetch_row(table)) {
if (!strcmp(col[1]->bind_ptr, site_idx)) {
- tmp = copy_string(col[1]->bind_ptr);
notes = smtk_concat_str(notes, "\n", translate("gettextFromC", "Wreck Data"));
for (i = 3; i < 16; i++) {
switch (i) {
case 3:
case 4:
- if (memcmp(col[i]->bind_ptr, "\0", 1))
- notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], strtok(copy_string(col[i]->bind_ptr), " "));
+ tmp = copy_string(col[i]->bind_ptr);
+ if (tmp)
+ notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], strtok(tmp , " "));
+ free(tmp);
break;
case 5:
- if (strcmp(rindex(copy_string(col[i]->bind_ptr), ' '), "\0"))
- notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], rindex(col[i]->bind_ptr, ' '));
+ tmp = copy_string(col[i]->bind_ptr);
+ if (tmp)
+ notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], rindex(tmp, ' '));
+ free(tmp);
break;
case 6 ... 9:
case 14:
case 15:
- if (memcmp(col[i]->bind_ptr, "\0", 1))
- notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], col[i]->bind_ptr);
+ tmp = copy_string(col[i]->bind_ptr);
+ if (tmp)
+ notes = smtk_concat_str(notes, "\n", "%s: %s", wreck_fields[i - 3], tmp);
+ free(tmp);
break;
default:
d = lrintl(strtold(col[i]->bind_ptr, NULL));
@@ -300,7 +305,6 @@ static void smtk_wreck_site(MdbHandle *mdb, char *site_idx, struct dive_site *ds
smtk_free(bound_values, table->num_cols);
mdb_free_tabledef(table);
free(notes);
- free(tmp);
}
/*