diff options
author | Timothy Arceri <[email protected]> | 2019-08-26 13:56:59 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2019-11-20 05:05:55 +0000 |
commit | fafda321275984c19476795257552eb18d640a38 (patch) | |
tree | e19c6533e73946075c2ad9868dd92de0e3710186 | |
parent | a47bfbe189d8ca05683da9dc2732d7fd435112d8 (diff) |
mesa: make error checking optional in _mesa_lookup_shader_include()
This will be usefull when implementing glIsNamedStringARB() which
doesn't do error checking, it just returns false for invalid
lookups instead.
Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Reviewed-by: Witold Baryluk <[email protected]>
-rw-r--r-- | src/mesa/main/shaderapi.c | 26 | ||||
-rw-r--r-- | src/mesa/main/shaderapi.h | 3 |
2 files changed, 19 insertions, 10 deletions
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 82f4bdc8210..13faf787a2d 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -3234,11 +3234,13 @@ static bool validate_and_tokenise_sh_incl(struct gl_context *ctx, void *mem_ctx, struct sh_incl_path_entry **path_list, - char *full_path) + char *full_path, bool error_check) { if (!valid_path_format(full_path)) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glNamedStringARB(invalid name %s)", full_path); + if (error_check) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glNamedStringARB(invalid name %s)", full_path); + } return false; } @@ -3251,8 +3253,11 @@ validate_and_tokenise_sh_incl(struct gl_context *ctx, while (path_str != NULL) { if (strlen(path_str) == 0) { - _mesa_error(ctx, GL_INVALID_VALUE, - "glNamedStringARB(invalid name %s)", full_path); + if (error_check) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glNamedStringARB(invalid name %s)", full_path); + } + return false; } @@ -3276,12 +3281,14 @@ validate_and_tokenise_sh_incl(struct gl_context *ctx, } const char * -_mesa_lookup_shader_include(struct gl_context *ctx, char *path) +_mesa_lookup_shader_include(struct gl_context *ctx, char *path, + bool error_check) { void *mem_ctx = ralloc_context(NULL); struct sh_incl_path_entry *path_list; - if (!validate_and_tokenise_sh_incl(ctx, mem_ctx, &path_list, path)) { + if (!validate_and_tokenise_sh_incl(ctx, mem_ctx, &path_list, path, + error_check)) { ralloc_free(mem_ctx); return NULL; } @@ -3352,7 +3359,8 @@ _mesa_NamedStringARB(GLenum type, GLint namelen, const GLchar *name, void *mem_ctx = ralloc_context(NULL); struct sh_incl_path_entry *path_list; - if (!validate_and_tokenise_sh_incl(ctx, mem_ctx, &path_list, name_cp)) { + if (!validate_and_tokenise_sh_incl(ctx, mem_ctx, &path_list, name_cp, + true)) { free(string_cp); free(name_cp); ralloc_free(mem_ctx); @@ -3422,7 +3430,7 @@ _mesa_GetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, if (!name_cp) return; - const char *source = _mesa_lookup_shader_include(ctx, name_cp); + const char *source = _mesa_lookup_shader_include(ctx, name_cp, true); if (!source) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(no string associated with path %s)", caller, name_cp); diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index 05048672089..13cde963ff8 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -416,7 +416,8 @@ void _mesa_destroy_shader_includes(struct gl_shared_state *shared); const char * -_mesa_lookup_shader_include(struct gl_context *ctx, char *path); +_mesa_lookup_shader_include(struct gl_context *ctx, char *path, + bool error_check); #ifdef __cplusplus } |