Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Wed, Apr 9, 2014 at 8:39 AM, Michel Dänzer <mic...@daenzer.net> wrote: > From: Michel Dänzer <michel.daen...@amd.com> > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74868 > > Cc: mesa-sta...@lists.freedesktop.org > Signed-off-by: Michel Dänzer <michel.daen...@amd.com> > --- > src/gallium/drivers/r600/r600_shader.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/src/gallium/drivers/r600/r600_shader.c > b/src/gallium/drivers/r600/r600_shader.c > index ddf79ee..b198359 100644 > --- a/src/gallium/drivers/r600/r600_shader.c > +++ b/src/gallium/drivers/r600/r600_shader.c > @@ -155,7 +155,7 @@ int r600_pipe_shader_create(struct pipe_context *ctx, > r = r600_shader_from_tgsi(rctx, shader, key); > if (r) { > R600_ERR("translation from TGSI failed !\n"); > - return r; > + goto error; > } > > /* disable SB for geom shaders - it can't handle the CF_EMIT > instructions */ > @@ -169,7 +169,7 @@ int r600_pipe_shader_create(struct pipe_context *ctx, > r = r600_bytecode_build(&shader->shader.bc); > if (r) { > R600_ERR("building bytecode failed !\n"); > - return r; > + goto error; > } > } > > @@ -182,7 +182,7 @@ int r600_pipe_shader_create(struct pipe_context *ctx, > dump, use_sb); > if (r) { > R600_ERR("r600_sb_bytecode_process failed !\n"); > - return r; > + goto error; > } > } > > @@ -192,16 +192,16 @@ int r600_pipe_shader_create(struct pipe_context *ctx, > r = r600_sb_bytecode_process(rctx, > &shader->gs_copy_shader->shader.bc, > > &shader->gs_copy_shader->shader, dump, 0); > if (r) > - return r; > + goto error; > } > > if ((r = store_shader(ctx, shader->gs_copy_shader))) > - return r; > + goto error; > } > > /* Store the shader in a buffer. */ > if ((r = store_shader(ctx, shader))) > - return r; > + goto error; > > /* Build state. */ > switch (shader->shader.processor_type) { > @@ -235,9 +235,13 @@ int r600_pipe_shader_create(struct pipe_context *ctx, > } > break; > default: > - return -EINVAL; > + goto error; > } > return 0; > + > +error: > + r600_pipe_shader_destroy(ctx, shader); > + return r; > } > > void r600_pipe_shader_destroy(struct pipe_context *ctx, struct > r600_pipe_shader *shader) > -- > 1.9.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev