summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c330fdd)
raw | patch | inline | side by side (parent: c330fdd)
author | Junio C Hamano <gitster@pobox.com> | |
Wed, 30 Jan 2008 21:12:25 +0000 (13:12 -0800) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 5 Feb 2008 08:38:41 +0000 (00:38 -0800) |
We had two pointer variables pointing to the same buffer and an
integer variable used to index into its tail part that was
active (old, oldlines and oldsize for the preimage, and their
'new' counterparts for the postimage).
To help readability, use 'oldlines' as the allocated pointer,
and use 'old' as the pointer to the tail that advances while the
code builds up the contents in the buffer. The size 'oldsize'
can be computed as (old-oldines).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
integer variable used to index into its tail part that was
active (old, oldlines and oldsize for the preimage, and their
'new' counterparts for the postimage).
To help readability, use 'oldlines' as the allocated pointer,
and use 'old' as the pointer to the tail that advances while the
code builds up the contents in the buffer. The size 'oldsize'
can be computed as (old-oldines).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c | patch | blob | history |
diff --git a/builtin-apply.c b/builtin-apply.c
index acd84f988aae230752b296381f3325a251fc3558..7fb330541fe62a52cef375ef78b8764b4361fe06 100644 (file)
--- a/builtin-apply.c
+++ b/builtin-apply.c
int match_beginning, match_end;
const char *patch = frag->patch;
int size = frag->size;
- char *old = xmalloc(size);
- char *new = xmalloc(size);
- char *oldlines, *newlines;
- int oldsize = 0, newsize = 0;
+ char *old, *new, *oldlines, *newlines;
int new_blank_lines_at_end = 0;
unsigned long leading, trailing;
int pos, applied_pos;
memset(&preimage, 0, sizeof(preimage));
memset(&postimage, 0, sizeof(postimage));
+ oldlines = xmalloc(size);
+ newlines = xmalloc(size);
+ old = oldlines;
+ new = newlines;
while (size > 0) {
char first;
int len = linelen(patch, size);
* followed by "\ No newline", then we also remove the
* last one (which is the newline, of course).
*/
- plen = len-1;
+ plen = len - 1;
if (len < size && patch[len] == '\\')
plen--;
first = *patch;
if (plen < 0)
/* ... followed by '\No newline'; nothing */
break;
- old[oldsize++] = '\n';
- new[newsize++] = '\n';
+ *old++ = '\n';
+ *new++ = '\n';
add_line_info(&preimage, "\n", 1, LINE_COMMON);
add_line_info(&postimage, "\n", 1, LINE_COMMON);
break;
case ' ':
case '-':
- memcpy(old + oldsize, patch + 1, plen);
- add_line_info(&preimage, old + oldsize, plen,
+ memcpy(old, patch + 1, plen);
+ add_line_info(&preimage, old, plen,
(first == ' ' ? LINE_COMMON : 0));
- oldsize += plen;
+ old += plen;
if (first == '-')
break;
/* Fall-through for ' ' */
case '+':
if (first != '+' || !no_add) {
- int added = apply_line(new + newsize, patch,
+ int added = apply_line(new, patch,
plen, ws_rule);
- add_line_info(&postimage, new + newsize, added,
+ add_line_info(&postimage, new, added,
(first == '+' ? 0 : LINE_COMMON));
- newsize += added;
+ new += added;
if (first == '+' &&
- added == 1 && new[newsize-1] == '\n')
+ added == 1 && new[-1] == '\n')
added_blank_line = 1;
}
break;
patch += len;
size -= len;
}
-
if (inaccurate_eof &&
- oldsize > 0 && old[oldsize - 1] == '\n' &&
- newsize > 0 && new[newsize - 1] == '\n') {
- oldsize--;
- newsize--;
+ old > oldlines && old[-1] == '\n' &&
+ new > newlines && new[-1] == '\n') {
+ old--;
+ new--;
}
- oldlines = old;
- newlines = new;
leading = frag->leading;
trailing = frag->trailing;
}
pos = frag->newpos ? (frag->newpos - 1) : 0;
- preimage.buf = old;
- preimage.len = oldsize;
- postimage.buf = new;
- postimage.len = newsize;
+ preimage.buf = oldlines;
+ preimage.len = old - oldlines;
+ postimage.buf = newlines;
+ postimage.len = new - newlines;
preimage.line = preimage.line_allocated;
postimage.line = postimage.line_allocated;
update_image(img, applied_pos, &preimage, &postimage);
} else {
if (apply_verbosely)
- error("while searching for:\n%.*s", oldsize, oldlines);
+ error("while searching for:\n%.*s",
+ (int)(old - oldlines), oldlines);
}
- free(old);
- free(new);
+ free(oldlines);
+ free(newlines);
free(preimage.line_allocated);
free(postimage.line_allocated);