diff options
author | Sebastian Gniazdowski <psprint@fastmail.com> | 2016-11-08 08:05:05 -0800 |
---|---|---|
committer | Peter Stephenson <pws@zsh.org> | 2016-11-09 10:32:48 +0000 |
commit | 49407686b47fed0e4810e0ba6127a9589c05b68b (patch) | |
tree | 7f1dc89a00160c216f65babb8a9823c3a8d025a5 /Src/string.c | |
parent | d8786da0cd091fa44fd5b1f11ae90f070952f0c8 (diff) | |
download | zsh-49407686b47fed0e4810e0ba6127a9589c05b68b.tar.gz zsh-49407686b47fed0e4810e0ba6127a9589c05b68b.tar.xz zsh-49407686b47fed0e4810e0ba6127a9589c05b68b.zip |
39875: add dupstring_glen to avoid redundant strlen calls
Diffstat (limited to 'Src/string.c')
-rw-r--r-- | Src/string.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Src/string.c b/Src/string.c index b46ea60cf..a8da14fe0 100644 --- a/Src/string.c +++ b/Src/string.c @@ -41,6 +41,8 @@ dupstring(const char *s) return t; } +/* Duplicate string on heap when length is known */ + /**/ mod_export char * dupstring_wlen(const char *s, unsigned len) @@ -54,6 +56,21 @@ dupstring_wlen(const char *s, unsigned len) return t; } +/* Duplicate string on heap, returning length of string */ + +/**/ +mod_export char * +dupstring_glen(const char *s, unsigned *len_ret) +{ + char *t; + + if (!s) + return NULL; + t = (char *) zhalloc((*len_ret = strlen((char *)s)) + 1); + strcpy(t, s); + return t; +} + /**/ mod_export char * ztrdup(const char *s) |