Thread: [Gpsbabel-misc] Crash in GPSBabel 1.2.4_beta09202004 when outputting to Garmin MapSource format
Brought to you by:
robertl
From: Jon S. <jo...@mi...> - 2004-09-21 17:35:37
|
This issue has just appeared for me with the latest version of GPSBabel (1.2.4_beta09202004). =20 Running the following command line results in a crash: =20 gpsbabel -i gpx -f Input.gpx -o mapsource -F Output.mps =20 This is merely a small annoyance at this time as the output file seems to be correctly generated, but I thought I should let you know of the issue. =20 Thanks, =20 Jon |
From: Robert L. <rob...@us...> - 2004-09-21 18:13:10
|
Jon Stanley wrote: > This issue has just appeared for me with the latest version of > GPSBabel (1.2.4_beta09202004). Interesting. > Running the following command line results in a crash: > gpsbabel -i gpx -f Input.gpx -o mapsource -F Output.mps The problem is because the Mapsource output module runs around like crazy copying waypoints. Later, when it's time to free them, we tank the memory allocator by re-freeing something we've already freed. (How about those shallow copies? And why are we copying at all?) This would happen only if the input happened to be a GPX file that contained a groundspeak description such as a Geocaching pocket query which is why it didn't show up on our test suite. I just committed the "obvious" fix. $ cvs diff waypt.c Index: waypt.c =================================================================== RCS file: /cvsroot/gpsbabel/gpsbabel/waypt.c,v retrieving revision 1.31 diff -p -u -r1.31 waypt.c --- waypt.c 17 Sep 2004 20:33:02 -0000 1.31 +++ waypt.c 21 Sep 2004 18:09:33 -0000 @@ -52,6 +52,14 @@ waypt_dupe(const waypoint *wpt) tmp->url_link_text = xstrdup(wpt->url_link_text); if (wpt->icon_descr && wpt->icon_descr_is_dynamic) tmp->icon_descr = xstrdup(wpt->icon_descr); + if (wpt->gc_data.desc_short.utfstring) { + tmp->gc_data.desc_short.utfstring = + xstrdup(tmp->gc_data.desc_short.utfstring); + } + if (wpt->gc_data.desc_long.utfstring) { + tmp->gc_data.desc_long.utfstring = + xstrdup(tmp->gc_data.desc_long.utfstring); + } /* * It's important that this duplicated waypoint not appear * on the master Q. > but I thought I should let you know of the issue. Absolutely. That's the point of betas. :-) Thanx, RJL |