Skip to content

Commit

Permalink
vcs-svn: avoid unnecessary copying of log message and author
Browse files Browse the repository at this point in the history
Use strbuf_swap when storing the svn:log and svn:author properties, so
pointers to rather than the contents of buffers get copied.  The main
effect should be to make the code a little easier to read.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
  • Loading branch information
Jonathan Nieder committed Mar 26, 2011
1 parent 7e2fe3a commit 4c3169b
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions vcs-svn/svndump.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ static void reset_dump_ctx(const char *url)
}

static void handle_property(const struct strbuf *key_buf,
const char *val, uint32_t len,
struct strbuf *val,
uint32_t *type_set)
{
const char *key = key_buf->buf;
Expand All @@ -95,23 +95,23 @@ static void handle_property(const struct strbuf *key_buf,
break;
if (!val)
die("invalid dump: unsets svn:log");
strbuf_reset(&rev_ctx.log);
strbuf_add(&rev_ctx.log, val, len);
strbuf_swap(&rev_ctx.log, val);
break;
case sizeof("svn:author"):
if (constcmp(key, "svn:author"))
break;
strbuf_reset(&rev_ctx.author);
if (val)
strbuf_add(&rev_ctx.author, val, len);
if (!val)
strbuf_reset(&rev_ctx.author);
else
strbuf_swap(&rev_ctx.author, val);
break;
case sizeof("svn:date"):
if (constcmp(key, "svn:date"))
break;
if (!val)
die("invalid dump: unsets svn:date");
if (parse_date_basic(val, &rev_ctx.timestamp, NULL))
warning("invalid timestamp: %s", val);
if (parse_date_basic(val->buf, &rev_ctx.timestamp, NULL))
warning("invalid timestamp: %s", val->buf);
break;
case sizeof("svn:executable"):
case sizeof("svn:special"):
Expand Down Expand Up @@ -187,10 +187,10 @@ static void read_props(void)
strbuf_swap(&key, &val);
continue;
case 'D':
handle_property(&val, NULL, 0, &type_set);
handle_property(&val, NULL, &type_set);
continue;
case 'V':
handle_property(&key, val.buf, len, &type_set);
handle_property(&key, &val, &type_set);
strbuf_reset(&key);
continue;
default:
Expand Down

0 comments on commit 4c3169b

Please sign in to comment.