diff options
author | Martin Nagy <mnagy@redhat.com> | 2009-03-29 19:39:43 +0200 |
---|---|---|
committer | Martin Nagy <mnagy@redhat.com> | 2009-03-29 19:39:43 +0200 |
commit | dd3b35c40b5709f8ea3ded23d4bb5fb4a9320352 (patch) | |
tree | 4763adb508f95598e3bce4d0bd6e69fde7d7df30 | |
parent | a900898fce49cc70cc8721b5c550945c471d20b6 (diff) | |
download | ldap_driver_testing-dd3b35c40b5709f8ea3ded23d4bb5fb4a9320352.tar.gz ldap_driver_testing-dd3b35c40b5709f8ea3ded23d4bb5fb4a9320352.tar.xz ldap_driver_testing-dd3b35c40b5709f8ea3ded23d4bb5fb4a9320352.zip |
Some speed optimizations for the string library.
Get rid of strncpy() and use memcpy() which is faster instead.
-rw-r--r-- | str.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -102,7 +102,7 @@ str_alloc(ld_string_t *str, size_t len) return ISC_R_NOMEMORY; if (str->data != NULL) { - strncpy(new_buffer, str->data, len); + memcpy(new_buffer, str->data, len); new_buffer[len] = '\0'; isc_mem_put(str->mctx, str->data, str->allocated); } else { @@ -227,13 +227,15 @@ isc_result_t str_copy(ld_string_t *dest, const ld_string_t *src) { isc_result_t result; + size_t len; REQUIRE(dest != NULL); REQUIRE(src != NULL); IGNORE_R(src->data == NULL); - CHECK(str_alloc(dest, str_len_internal(src))); - strncpy(dest->data, src->data, dest->allocated); + len = str_len_internal(src); + CHECK(str_alloc(dest, len)); + memcpy(dest->data, src->data, len + 1); return ISC_R_SUCCESS; @@ -277,12 +279,15 @@ isc_result_t str_init_char(ld_string_t *dest, const char *src) { isc_result_t result; + size_t len; REQUIRE(dest != NULL); IGNORE_R(src == NULL); - CHECK(str_alloc(dest, strlen(src))); - strncpy(dest->data, src, dest->allocated); + len = strlen(src); + CHECK(str_alloc(dest, len)); + memcpy(dest->data, src, len); + dest->data[len] = '\0'; return ISC_R_SUCCESS; @@ -312,7 +317,7 @@ str_cat_char(ld_string_t *dest, const char *src) CHECK(str_alloc(dest, dest_size + src_size)); from = dest->data + dest_size; - strncpy(from, src, src_size + 1); + memcpy(from, src, src_size + 1); return ISC_R_SUCCESS; @@ -335,7 +340,7 @@ str_cat_char_len(ld_string_t *dest, const char *src, size_t len) CHECK(str_alloc(dest, dest_size + len)); from = dest->data + dest_size; - strncpy(from, src, len); + memcpy(from, src, len); from[len] = '\0'; return ISC_R_SUCCESS; |