vcs-svn: simplify cleanup in apply_one_window
[gitweb.git] / vcs-svn / svndiff.c
index c89d9623f4e87642269f32f1a4422bde7ab2c645..e810d0c3ff34ecd52c00b57342867b0fdb4f1f57 100644 (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,
                            struct sliding_view *preimage, FILE *out)
 {
+       int rv = -1;
        struct window ctx = WINDOW_INIT(preimage);
        size_t out_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))
                goto error_out;
        if (ctx.out.len != out_len) {
-               error("invalid delta: incorrect postimage length");
+               rv = error("invalid delta: incorrect postimage length");
                goto error_out;
        }
        if (write_strbuf(&ctx.out, out))
                goto error_out;
-       window_release(&ctx);
-       return 0;
+       rv = 0;
 error_out:
        window_release(&ctx);
-       return -1;
+       return rv;
 }
 
 int svndiff0_apply(struct line_buffer *delta, off_t delta_len,