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 */
