mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-06 05:40:30 +01:00
mesa: Make glDebugMessageInsert deal with negative length for all types.
From the KHR_debug spec, section 5.5.5 (Externally Generated Messages):
"If <length> is negative, it is implied that <buf> contains a null
terminated string. The error INVALID_VALUE will be generated if the
number of characters in <buf>, excluding the null terminator when
<length> is negative, is not less than the value of
MAX_DEBUG_MESSAGE_LENGTH."
This indicates that length should be set to strlen for all types, not
just GL_DEBUG_TYPE_MARKER. We want it to be after validate_length()
so we still generate appropriate errors.
Fixes crashes from uncaught std::string exceptions in many
dEQP-GLES31.functional.debug.error_filters.* tests.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
This commit is contained in:
parent
412e686da9
commit
028459a00d
1 changed files with 4 additions and 3 deletions
|
|
@ -1009,15 +1009,16 @@ _mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id,
|
|||
if (!validate_length(ctx, callerstr, length, buf))
|
||||
return; /* GL_INVALID_VALUE */
|
||||
|
||||
/* if length not specified, string will be null terminated: */
|
||||
if (length < 0)
|
||||
length = strlen(buf);
|
||||
|
||||
_mesa_log_msg(ctx, gl_enum_to_debug_source(source),
|
||||
gl_enum_to_debug_type(type), id,
|
||||
gl_enum_to_debug_severity(severity),
|
||||
length, buf);
|
||||
|
||||
if (type == GL_DEBUG_TYPE_MARKER && ctx->Driver.EmitStringMarker) {
|
||||
/* if length not specified, string will be null terminated: */
|
||||
if (length < 0)
|
||||
length = strlen(buf);
|
||||
ctx->Driver.EmitStringMarker(ctx, buf, length);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue