[Mesa-dev] [PATCH] glsl: do not attempt to dump_shader if no shaderobj
Tapani Pälli
tapani.palli at intel.com
Mon Sep 21 22:44:46 PDT 2015
On 09/21/2015 05:04 PM, Iago Toral wrote:
> On Mon, 2015-09-21 at 09:15 +0300, Tapani Pälli wrote:
>> Patch fixes a crash in conformance test that tries out different
>> invalid arguments for glShaderSource and glGetShaderSource:
>>
>> ES2-CTS.gtf.GL.glGetShaderSource.getshadersource_programhandle
>>
>> This is a regression from commit:
>> 04e201d0c02cd30ace5c6fe80e9f021ebb733682
>>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>> src/mesa/main/shaderapi.c | 18 ++++++++++--------
>> 1 file changed, 10 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
>> index f31980b..7733d02 100644
>> --- a/src/mesa/main/shaderapi.c
>> +++ b/src/mesa/main/shaderapi.c
>> @@ -1699,15 +1699,17 @@ _mesa_ShaderSource(GLhandleARB shaderObj, GLsizei count,
>> #if defined(HAVE_SHA1)
>> sh = _mesa_lookup_shader(ctx, shaderObj);
>
> Why not call this earlier in that function (before we even process the
> shader string) and return if it is NULL? There is no point in waiting
> until this moment to check for that.
>
> Then, when we call shader_source right below this code, we could just
> pass the sh object directly instead of having that function call
> _mesa_lookup_shader again (we could maybe replace that call with an
> assert to make sure that we passed a valid shader object)
True, it can be simplified. I did not want to touch original code
because it works but while being here I can give it a shot.
> Iago
>
>> - /* Dump original shader source to MESA_SHADER_DUMP_PATH and replace
>> - * if corresponding entry found from MESA_SHADER_READ_PATH.
>> - */
>> - dump_shader(sh->Stage, source);
>> + if (sh) {
>> + /* Dump original shader source to MESA_SHADER_DUMP_PATH and replace
>> + * if corresponding entry found from MESA_SHADER_READ_PATH.
>> + */
>> + dump_shader(sh->Stage, source);
>>
>> - replacement = read_shader(sh->Stage, source);
>> - if (replacement) {
>> - free(source);
>> - source = replacement;
>> + replacement = read_shader(sh->Stage, source);
>> + if (replacement) {
>> + free(source);
>> + source = replacement;
>> + }
>> }
>> #endif /* HAVE_SHA1 */
>>
>
>
More information about the mesa-dev
mailing list