diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/make/str.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/usr.bin/make/str.c b/usr.bin/make/str.c index 03ff7a4a..4889ec9 100644 --- a/usr.bin/make/str.c +++ b/usr.bin/make/str.c @@ -94,30 +94,26 @@ str_concat(s1, s2, flags) char *result; /* get the length of both strings */ - len1 = s1 == NULL ? 0 : strlen(s1); - len2 = s2 == NULL ? 0 : strlen(s2); + len1 = strlen(s1); + len2 = strlen(s2); /* allocate length plus separator plus EOS */ result = emalloc((u_int)(len1 + len2 + 2)); /* copy first string into place */ - if (len1) - memcpy(result, s1, len1); + memcpy(result, s1, len1); /* add separator character */ - if (len1 && len2) { - if (flags & STR_ADDSPACE) - result[len1++] = ' '; - else if (flags & STR_ADDSLASH) - result[len1++] = '/'; + if (flags & STR_ADDSPACE) { + result[len1] = ' '; + ++len1; + } else if (flags & STR_ADDSLASH) { + result[len1] = '/'; + ++len1; } - /* copy second string into place */ - if (len2) - memcpy(result + len1, s2, len2); - - /* Terminate. */ - result[len1 + len2] = '\0'; + /* copy second string plus EOS into place */ + memcpy(result + len1, s2, len2 + 1); /* free original strings */ if (flags & STR_DOFREE) { |