summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormdankov <mdankov@users.noreply.github.com>2015-11-14 00:03:05 +0300
committermdankov <mdankov@users.noreply.github.com>2015-11-14 00:03:05 +0300
commit3dcf4ba91e33a327d920cedfe29455569c3de747 (patch)
tree40b9f2109eda214a20c17d9b9eea6ee27e7eb117
parentde4afe05c8b5a599f5ad9c595501e24615a1413e (diff)
downloadnavit-3dcf4ba91e33a327d920cedfe29455569c3de747.tar.gz
Fix:gui_internal:memleakR6368
Different implementation of #1331 to fix memory leak
-rw-r--r--navit/gui/internal/gui_internal_command.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/navit/gui/internal/gui_internal_command.c b/navit/gui/internal/gui_internal_command.c
index 03d1e59e5..77d343f09 100644
--- a/navit/gui/internal/gui_internal_command.c
+++ b/navit/gui/internal/gui_internal_command.c
@@ -57,7 +57,6 @@ coordinates_geo(const struct coord_geo *gc, char sep)
int lat_deg,lat_min,lat_sec;
int lng_deg,lng_min,lng_sec;
struct coord_geo g=*gc;
- char *ret;
if (g.lat < 0) {
g.lat=-g.lat;
@@ -74,21 +73,8 @@ coordinates_geo(const struct coord_geo *gc, char sep)
lng_min=fmod(g.lng*60-lng_sec/60.0+0.5,60);
lng_deg=g.lng-lng_min/60.0-lng_sec/3600.0+0.5;;
- /* Don't use g_strdup_printf for the full string because it has issues with extended ANSI characters
- * (notably the degree sign, 0xb0) on Android Lollipop.
- */
- ret = g_strjoin(NULL,
- g_strdup_printf("%d", lat_deg), "°",
- g_strdup_printf("%d", lat_min), "'",
- g_strdup_printf("%d", lat_sec), "\" ",
- g_strnfill(1, latc),
- g_strnfill(1, sep),
- g_strdup_printf("%d", lng_deg), "°",
- g_strdup_printf("%d", lng_min), "'",
- g_strdup_printf("%d", lng_sec), "\" ",
- g_strnfill(1, lngc),
- NULL);
- return ret;
+ /* Using degree sign directly in g_strdup_printf format string breaks things on Android Lollipop, see trac #1331. */
+ return g_strdup_printf("%d%s%d'%d\" %c%c%d%s%d'%d\" %c",lat_deg,"°",lat_min,lat_sec,latc,sep,lng_deg,"°",lng_min,lng_sec,lngc);
}
/**