git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/9] vcs-svn: simplify cleanup in apply_one_window

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jul 6, 2012, 17:18 UTC
Message-ID
<20120706171759.GD31001@burratino>
In-Reply-To
<20120706171040.GA31001@burratino>
From: David Barr <davidbarr@google.com>
Date: Fri, 1 Jun 2012 00:41:26 +1000
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>
---
Changes since v2:
 - new description
 vcs-svn/svndiff.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/vcs-svn/svndiff.c b/vcs-svn/svndiff.c
index c89d9623..e810d0c3 100644
--- a/vcs-svn/svndiff.c
+++ b/vcs-svn/svndiff.c
@@ -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,
-- 
1.7.10.4
Previous: Jonathan NiederNext: Jonathan Nieder
Message 8 of 16 in “What's cooking in git.git (Jun 2012, #02; Wed, 6)”
  1. Junio C HamanoJun 6, 2012
  2. David Michael BarrJun 6, 2012
  3. Jonathan NiederJun 7, 2012
  4. Junio C HamanoJun 7, 2012
  5. [GIT PULL] vcs-svn housekeepingJonathan Nieder, Jul 6, 2012
  6. 1/9 vcs-svn: drop no-op reset methodsJonathan Nieder, Jul 6, 2012
  7. 2/9 vcs-svn: avoid self-assignment in dummy initialization of pre_offJonathan Nieder, Jul 6, 2012
  8. 3/9 vcs-svn: simplify cleanup in apply_one_windowJonathan Nieder, Jul 6, 2012
  9. 4/9 vcs-svn: use constcmp instead of prefixcmpJonathan Nieder, Jul 6, 2012
  10. 5/9 vcs-svn: use strstr instead of memmemJonathan Nieder, Jul 6, 2012
  11. 6/9 vcs-svn: suppress signed/unsigned comparison warningsJonathan Nieder, Jul 6, 2012
  12. 7/9 vcs-svn: suppress a signed/unsigned comparison warningJonathan Nieder, Jul 6, 2012
  13. 8/9 vcs-svn: suppress a signed/unsigned comparison warningJonathan Nieder, Jul 6, 2012
  14. 9/9 vcs-svn: allow 64-bit Prop-Content-LengthJonathan Nieder, Jul 6, 2012
  15. David Michael BarrJul 6, 2012
  16. Junio C HamanoJul 6, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.