--- a/src/sprite.c Sun Jun 22 11:15:53 2025 +0200 +++ b/src/sprite.c Sun Jun 22 11:36:37 2025 +0200 @@ -52,10 +52,11 @@ asc_error("Loading sprite shader failed."); return NULL; } + // TODO: find better way to deal with inheritance (&shader->program just looks bad) AscSpriteShader *shader = asc_shader_create(codes, sizeof(*shader)); - if (shader == NULL) { + if (asc_shader_invalid(&shader->program)) { asc_shader_free_codes(codes); - return NULL; + return (AscShaderProgram*) shader; } shader->tex = glGetUniformLocation(shader->program.gl_id, "tex"); asc_shader_free_codes(codes); @@ -99,7 +100,8 @@ sprite->texture->target == GL_TEXTURE_RECTANGLE ? asc_shader_lookup_or_create(ASC_SHADER_SPRITE_RECT, asc_sprite_shader_create, 1) : asc_shader_lookup_or_create(ASC_SHADER_SPRITE_UV, asc_sprite_shader_create, 0); - if (shader == NULL) return; + // TODO: how to remove the following cast? + if (asc_shader_invalid((AscShaderProgram*)shader)) return; asc_shader_use(&shader->program, camera); // Upload model matrix