summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-09-28 13:50:15 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-09-28 13:50:15 -0400
commit32975100407981df8148095740751ae53d996443 (patch)
treed3155ef32ee7404a19131beae16516624e823308
parenta2849d3f7a62258b787fe0729c8baf7c1427c321 (diff)
downloadgtk+-32975100407981df8148095740751ae53d996443.tar.gz
gsk: Improve gsk_gl_shader_node_new preconditions
Check all that we can.
-rw-r--r--gsk/gskrendernodeimpl.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 2a1c6d038a..8ca1ece25d 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -4571,9 +4571,13 @@ gsk_gl_shader_node_new (GskGLShader *shader,
{
GskGLShaderNode *self;
GskRenderNode *node;
- int uniforms_size;
+ g_return_val_if_fail (GSK_IS_GL_SHADER (shader), NULL);
g_return_val_if_fail (bounds != NULL, NULL);
+ g_return_val_if_fail ((args == NULL && gsk_gl_shader_get_n_uniforms (shader) == 0) ||
+ (args != NULL && g_bytes_get_size (args) == gsk_gl_shader_get_args_size (shader)), NULL);
+ g_return_val_if_fail ((children == NULL && n_children == 0) ||
+ (children != NULL && n_children == gsk_gl_shader_get_n_required_textures (shader)), NULL);
self = gsk_render_node_alloc (GSK_GL_SHADER_NODE);
node = (GskRenderNode *) self;
@@ -4581,9 +4585,6 @@ gsk_gl_shader_node_new (GskGLShader *shader,
graphene_rect_init_from_rect (&node->bounds, bounds);
self->shader = g_object_ref (shader);
- uniforms_size = gsk_gl_shader_get_args_size (shader);
- g_assert (g_bytes_get_size (args) == uniforms_size);
-
self->args = g_bytes_ref (args);
self->n_children = n_children;