The variable represents the length/size of the stack, thus (based on the spec requirement and the allocation above) it should be set to 1.
This means that we have to use GroupStackDepth-1 to access the correct entry in the array. Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- src/mesa/main/errors.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c index 366b119..52dbd50 100644 --- a/src/mesa/main/errors.c +++ b/src/mesa/main/errors.c @@ -406,6 +406,7 @@ debug_create(void) free(debug); return NULL; } + debug->GroupStackDepth = 1; /* Initialize state for filtering known debug messages. */ for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) { @@ -422,7 +423,7 @@ debug_create(void) static bool debug_is_group_read_only(const struct gl_debug_state *debug) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; return (gstack > 0 && debug->Groups[gstack] == debug->Groups[gstack - 1]); } @@ -432,7 +433,7 @@ debug_is_group_read_only(const struct gl_debug_state *debug) static bool debug_make_group_writable(struct gl_debug_state *debug) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; const struct gl_debug_group *src = debug->Groups[gstack]; struct gl_debug_group *dst; int s, t; @@ -472,7 +473,7 @@ debug_make_group_writable(struct gl_debug_state *debug) static void debug_clear_group(struct gl_debug_state *debug) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; if (!debug_is_group_read_only(debug)) { struct gl_debug_group *grp = debug->Groups[gstack]; @@ -514,7 +515,7 @@ debug_set_message_enable(struct gl_debug_state *debug, enum mesa_debug_type type, GLuint id, GLboolean enabled) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; struct gl_debug_namespace *ns; debug_make_group_writable(debug); @@ -541,7 +542,7 @@ debug_set_message_enable_all(struct gl_debug_state *debug, enum mesa_debug_severity severity, GLboolean enabled) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; int s, t, smax, tmax; if (source == MESA_DEBUG_SOURCE_COUNT) { @@ -579,7 +580,7 @@ debug_is_message_enabled(const struct gl_debug_state *debug, GLuint id, enum mesa_debug_severity severity) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; struct gl_debug_group *grp = debug->Groups[gstack]; struct gl_debug_namespace *nspace = &grp->Namespaces[source][type]; @@ -657,13 +658,13 @@ debug_delete_messages(struct gl_debug_state *debug, int count) static struct gl_debug_message * debug_get_group_message(struct gl_debug_state *debug) { - return &debug->GroupMessages[debug->GroupStackDepth]; + return &debug->GroupMessages[debug->GroupStackDepth - 1]; } static void debug_push_group(struct gl_debug_state *debug) { - const GLint gstack = debug->GroupStackDepth; + const GLint gstack = debug->GroupStackDepth - 1; /* just point to the previous stack */ debug->Groups[gstack + 1] = debug->Groups[gstack]; -- 2.6.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev