diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-01-23 11:55:29 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-01-23 11:57:00 -0800 |
commit | 3e5a508b15fe28083dfdf5a049d33e8769616395 (patch) | |
tree | 2988b0075a67d1748b28bbe3df5e88e03ac08ae9 /uemis.c | |
parent | b1db60ba4795638192c0dea93670d858d4178528 (diff) | |
download | subsurface-3e5a508b15fe28083dfdf5a049d33e8769616395.tar.gz |
Ensure each dive has its own copy of the location text (UEMIS importer)
Since multiple dives can reference the same divesite we need to do the
strdup when the value gets assigned, not when it gets passed into the
helper function.
This also validates the location string as on my divecomputer there is an
invalid divespot 0 that has a corrupted UTF8 string as location name.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'uemis.c')
-rw-r--r-- | uemis.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -166,9 +166,11 @@ void uemis_mark_divelocation(int diveid, int divespot, char **location, degrees_ void uemis_set_divelocation(int divespot, char *text, double longitude, double latitude) { struct uemis_helper *hp = uemis_helper; + if (!g_utf8_validate(text, -1, NULL)) + return; while (hp) { if (hp->divespot == divespot && hp->location) { - *hp->location = text; + *hp->location = strdup(text); hp->longitude->udeg = round(longitude * 1000000); hp->latitude->udeg = round(latitude * 1000000); } |