vcs-svn: simplify cleanup in apply_one_window

Currently the cleanup code looks like this:

	free resources
	return 0;
 error_out:
	free resources
	return -1;

Avoid duplicating the "free resources" part by keeping the return
value in a variable and sharing code between the success and
exceptional case:

	ret = 0;
 out:
	free resources
	return ret;

Noticed in the svn-dump-fast-export project, where using the error()
macro in void context produces a warning.

Signed-off-by: David Barr <davidbarr@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
maint
David Barr 2012-06-01 00:41:26 +10:00 committed by Jonathan Nieder
parent 4a5de8dd79
commit 4a1613194a
1 changed files with 4 additions and 4 deletions

View File

@ -258,6 +258,7 @@ static int apply_window_in_core(struct window *ctx)
static int apply_one_window(struct line_buffer *delta, off_t *delta_len, static int apply_one_window(struct line_buffer *delta, off_t *delta_len,
struct sliding_view *preimage, FILE *out) struct sliding_view *preimage, FILE *out)
{ {
int rv = -1;
struct window ctx = WINDOW_INIT(preimage); struct window ctx = WINDOW_INIT(preimage);
size_t out_len; size_t out_len;
size_t instructions_len; size_t instructions_len;
@ -275,16 +276,15 @@ static int apply_one_window(struct line_buffer *delta, off_t *delta_len,
if (apply_window_in_core(&ctx)) if (apply_window_in_core(&ctx))
goto error_out; goto error_out;
if (ctx.out.len != out_len) { if (ctx.out.len != out_len) {
error("invalid delta: incorrect postimage length"); rv = error("invalid delta: incorrect postimage length");
goto error_out; goto error_out;
} }
if (write_strbuf(&ctx.out, out)) if (write_strbuf(&ctx.out, out))
goto error_out; goto error_out;
window_release(&ctx); rv = 0;
return 0;
error_out: error_out:
window_release(&ctx); window_release(&ctx);
return -1; return rv;
} }


int svndiff0_apply(struct line_buffer *delta, off_t delta_len, int svndiff0_apply(struct line_buffer *delta, off_t delta_len,