diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-24 02:17:05 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-24 02:17:05 +0200 |
commit | 0675b03de44b75f5f5fc7a54c164628e9ee01e9c (patch) | |
tree | 462d77c8a4e44b349c4d1ebd454a3aeb6fcee3a6 | |
parent | 94af83eb8d92252339098b37826768b610e3e34b (diff) | |
download | busybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.tar.gz busybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.tar.bz2 busybox-w32-0675b03de44b75f5f5fc7a54c164628e9ee01e9c.zip |
hush: use mempcpy where useful
function old new delta
o_addblock 58 42 -16
expand_one_var 1618 1555 -63
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-79) Total: -79 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | shell/hush.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/shell/hush.c b/shell/hush.c index 170d5f33b..309ed2139 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -2662,9 +2662,8 @@ static void o_delchr(o_string *o) | |||
2662 | static void o_addblock(o_string *o, const char *str, int len) | 2662 | static void o_addblock(o_string *o, const char *str, int len) |
2663 | { | 2663 | { |
2664 | o_grow_by(o, len); | 2664 | o_grow_by(o, len); |
2665 | memcpy(&o->data[o->length], str, len); | 2665 | ((char*)mempcpy(&o->data[o->length], str, len))[0] = '\0'; |
2666 | o->length += len; | 2666 | o->length += len; |
2667 | o->data[o->length] = '\0'; | ||
2668 | } | 2667 | } |
2669 | 2668 | ||
2670 | static void o_addstr(o_string *o, const char *str) | 2669 | static void o_addstr(o_string *o, const char *str) |
@@ -5519,17 +5518,15 @@ static char *replace_pattern(char *val, const char *pattern, const char *repl, c | |||
5519 | break; | 5518 | break; |
5520 | 5519 | ||
5521 | result = xrealloc(result, res_len + (s - val) + repl_len + 1); | 5520 | result = xrealloc(result, res_len + (s - val) + repl_len + 1); |
5522 | memcpy(result + res_len, val, s - val); | 5521 | strcpy(mempcpy(result + res_len, val, s - val), repl); |
5523 | res_len += s - val; | 5522 | res_len += (s - val) + repl_len; |
5524 | strcpy(result + res_len, repl); | ||
5525 | res_len += repl_len; | ||
5526 | debug_printf_varexp("val:'%s' s:'%s' result:'%s'\n", val, s, result); | 5523 | debug_printf_varexp("val:'%s' s:'%s' result:'%s'\n", val, s, result); |
5527 | 5524 | ||
5528 | val = s + size; | 5525 | val = s + size; |
5529 | if (exp_op == '/') | 5526 | if (exp_op == '/') |
5530 | break; | 5527 | break; |
5531 | } | 5528 | } |
5532 | if (val[0] && result) { | 5529 | if (*val && result) { |
5533 | result = xrealloc(result, res_len + strlen(val) + 1); | 5530 | result = xrealloc(result, res_len + strlen(val) + 1); |
5534 | strcpy(result + res_len, val); | 5531 | strcpy(result + res_len, val); |
5535 | debug_printf_varexp("val:'%s' result:'%s'\n", val, result); | 5532 | debug_printf_varexp("val:'%s' result:'%s'\n", val, result); |