Index: src/display.c =================================================================== --- src/display.c (revision 18) +++ src/display.c (revision 19) @@ -2929,9 +2929,7 @@ if(select_poi(unitx, unity, &poi, TRUE)) { type = TAP_TYPE_POI; - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); } if((_show_paths & ROUTES_MASK) && _route.whead <= _route.wtail) Index: src/cmenu.c =================================================================== --- src/cmenu.c (revision 18) +++ src/cmenu.c (revision 19) @@ -288,9 +288,7 @@ poi_dialog(_window, &poi, TRUE); poi_cat = poi.cat_id; - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__); } @@ -666,9 +664,7 @@ poi_dialog(_window, &poi, FALSE); - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__); return TRUE; Index: src/input.c =================================================================== --- src/input.c (revision 18) +++ src/input.c (revision 19) @@ -669,9 +669,7 @@ banner = g_strdup_printf("%s (%s)", poi.label, poi.clabel); MACRO_BANNER_SHOW_INFO(_window, banner); g_free(banner); - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); } } if(!selected_point && (_show_paths & ROUTES_MASK) Index: src/menu.c =================================================================== --- src/menu.c (revision 18) +++ src/menu.c (revision 19) @@ -1027,9 +1027,7 @@ banner = g_strdup_printf("%s (%s)", poi.label, poi.clabel); MACRO_BANNER_SHOW_INFO(_window, banner); g_free(banner); - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); if(_center_mode > 0) gtk_check_menu_item_set_active( Index: src/poi.c =================================================================== --- src/poi.c (revision 18) +++ src/poi.c (revision 19) @@ -1584,12 +1584,7 @@ PoiInfo *poi_info = curr->data; if(poi_info) { - if(poi_info->label) - g_free(poi_info->label); - if(poi_info->desc) - g_free(poi_info->desc); - if(poi_info->clabel) - g_free(poi_info->clabel); + poi_free_data(poi_info); g_slice_free(PoiInfo, poi_info); } } @@ -1848,9 +1843,7 @@ /* POI was deleted. */ gtk_list_store_remove(store, &iter); } - g_free(poi.label); - g_free(poi.desc); - g_free(poi.clabel); + poi_free_data(&poi); } vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__); @@ -3149,6 +3142,17 @@ } void +poi_free_data(PoiInfo *poi) +{ + g_free(poi->label); + poi->label = NULL; + g_free(poi->desc); + poi->desc = NULL; + g_free(poi->clabel); + poi->clabel = NULL; +} + +void poi_destroy() { printf("%s()\n", __PRETTY_FUNCTION__); Index: src/poi.h =================================================================== --- src/poi.h (revision 18) +++ src/poi.h (revision 19) @@ -45,6 +45,8 @@ void map_render_poi(void); +void poi_free_data(PoiInfo *poi); + void poi_destroy(void); #endif /* ifndef MAEMO_MAPPER_POI_H */