85f4226bd3
The `eval` methods take a shader/blender/colorFilter, and we assumed when assembling the ChildCall expression that the child expression would be a VariableReference because opaque objects don't participate in normal expressions. However, comma-expressions were allowed to contain opaque types. GLSL doesn't allow opaque types in comma-expressions: http://screen/8YW59tYDUbBh9eW Now we disallow them as well. Change-Id: Iaf88ef7bddb5cc8f1f1e23b515174dfc291e00c7 Bug: oss-fuzz:41072 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472446 Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: John Stiles <johnstiles@google.com>
34 lines
1.2 KiB
Plaintext
34 lines
1.2 KiB
Plaintext
// Expect 15 errors
|
|
|
|
uniform shader s;
|
|
uniform colorFilter f;
|
|
uniform blender b;
|
|
|
|
uniform float2 xy;
|
|
uniform half4 color;
|
|
int i;
|
|
|
|
half4 eval_shader_xy_color() { return s.eval(xy, color); }
|
|
half4 eval_shader_color() { return s.eval(color); }
|
|
half4 eval_shader_color_xy() { return s.eval(color, xy); }
|
|
half4 eval_shader_empty() { return s.eval(); }
|
|
half4 eval_shader_matrix() { return s.eval(float3x3(1)); }
|
|
half4 eval_shader_comma_expr() { return (i++, s).eval(xy); }
|
|
|
|
half4 eval_colorFilter_empty() { return f.eval(); }
|
|
half4 eval_colorFilter_xy() { return f.eval(xy); }
|
|
half4 eval_colorFilter_xy_color() { return f.eval(xy, color); }
|
|
half4 eval_colorFilter_comma_expr() { return (s, f).eval(color); }
|
|
|
|
half4 eval_blender_empty() { return b.eval(); }
|
|
half4 eval_blender_color() { return b.eval(color); }
|
|
half4 eval_blender_xy() { return b.eval(xy); }
|
|
half4 eval_blender_xy_color() { return b.eval(xy, color); }
|
|
half4 eval_blender_comma_expr() { return (b, b).eval(color, color); }
|
|
|
|
// Correct usage (EXPECT NO ERRORS)
|
|
|
|
half4 eval_blender() { return b.eval(color, color); }
|
|
half4 eval_colorFilter() { return f.eval(color); }
|
|
half4 eval_shader() { return s.eval(xy); }
|