gallium/hud: do not use free() for the free_query_data hook
authorBrian Paul <brianp@vmware.com>
Mon, 24 Jun 2013 16:43:16 +0000 (10:43 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 24 Jun 2013 20:23:54 +0000 (14:23 -0600)
That confuses Gallium's memory debugging code where CALLOC/MALLOC
must be matched with FREE, not free().

Reviewed-by: Marek Olšák <maraeo@gmail.com>
src/gallium/auxiliary/hud/hud_cpu.c
src/gallium/auxiliary/hud/hud_fps.c
src/gallium/auxiliary/hud/hud_private.h

index ce98115d5428ae8d0d7e3470a0ca0866dd172472..cd20deec9bdd3dc7fb87146211daeb3a0f9c9757 100644 (file)
@@ -116,6 +116,12 @@ query_cpu_load(struct hud_graph *gr)
    }
 }
 
+static void
+free_query_data(void *p)
+{
+   FREE(p);
+}
+
 void
 hud_cpu_graph_install(struct hud_pane *pane, unsigned cpu_index)
 {
@@ -144,7 +150,11 @@ hud_cpu_graph_install(struct hud_pane *pane, unsigned cpu_index)
    }
 
    gr->query_new_value = query_cpu_load;
-   gr->free_query_data = free;
+
+   /* Don't use free() as our callback as that messes up Gallium's
+    * memory debugger.  Use simple free_query_data() wrapper.
+    */
+   gr->free_query_data = free_query_data;
 
    info = gr->query_data;
    info->cpu_index = cpu_index;
index 80381f54713550f13c07372aead503aae993e010..6e9be712b66823a99b6b23ca0c172a0f3a43c915 100644 (file)
@@ -60,6 +60,12 @@ query_fps(struct hud_graph *gr)
    }
 }
 
+static void
+free_query_data(void *p)
+{
+   FREE(p);
+}
+
 void
 hud_fps_graph_install(struct hud_pane *pane)
 {
@@ -76,7 +82,11 @@ hud_fps_graph_install(struct hud_pane *pane)
    }
 
    gr->query_new_value = query_fps;
-   gr->free_query_data = free;
+
+   /* Don't use free() as our callback as that messes up Gallium's
+    * memory debugger.  Use simple free_query_data() wrapper.
+    */
+   gr->free_query_data = free_query_data;
 
    hud_pane_add_graph(pane, gr);
 }
index 2b7d56bb1ad0fea3b608bc939dd6ea0702941907..1606ada4adf5c2ded9b3105ea4f62f054972d5b7 100644 (file)
@@ -42,7 +42,7 @@ struct hud_graph {
    char name[128];
    void *query_data;
    void (*query_new_value)(struct hud_graph *gr);
-   void (*free_query_data)(void *ptr);
+   void (*free_query_data)(void *ptr); /**< do not use ordinary free() */
 
    /* mutable variables */
    unsigned num_vertices;