mesa: Fix _mesa_problem() on context destroy after application debug output
authorEric Anholt <eric@anholt.net>
Sat, 23 Feb 2013 01:08:28 +0000 (17:08 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 5 Mar 2013 22:24:59 +0000 (14:24 -0800)
This was apparently not noticed because we don't have any testing of
application-generated debug output.  However, as I'm changing the
GL-generated debug output to use the same path as
application/middleware-generated debug output, this obviously became an
issue.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/main/errors.c

index 3714067a98f51008cfd6eab1b5755aa8c1b10df5..6adc466733490a3978a1ecdb99f077a1a5be22a1 100644 (file)
@@ -756,6 +756,11 @@ _mesa_init_errors(struct gl_context *ctx)
       }
 }
 
+static void
+do_nothing(GLuint key, void *data, void *userData)
+{
+}
+
 void
 _mesa_free_errors_data(struct gl_context *ctx)
 {
@@ -765,6 +770,7 @@ _mesa_free_errors_data(struct gl_context *ctx)
    /* Tear down state for filtering client-provided debug messages. */
    for (s = 0; s < SOURCE_COUNT; s++)
       for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
+         _mesa_HashDeleteAll(ClientIDs->Namespaces[s][t].IDs, do_nothing, NULL);
          _mesa_DeleteHashTable(ClientIDs->Namespaces[s][t].IDs);
          for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) {
             struct simple_node *node, *tmp;