summaryrefslogtreecommitdiffstats
path: root/uemis.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-01-23 11:55:29 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-01-23 11:57:00 -0800
commit3e5a508b15fe28083dfdf5a049d33e8769616395 (patch)
tree2988b0075a67d1748b28bbe3df5e88e03ac08ae9 /uemis.c
parentb1db60ba4795638192c0dea93670d858d4178528 (diff)
downloadsubsurface-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.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/uemis.c b/uemis.c
index d323cd802..29913ca0d 100644
--- a/uemis.c
+++ b/uemis.c
@@ -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);
}