summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@redhat.com>2009-03-29 19:39:43 +0200
committerMartin Nagy <mnagy@redhat.com>2009-03-29 19:39:43 +0200
commitdd3b35c40b5709f8ea3ded23d4bb5fb4a9320352 (patch)
tree4763adb508f95598e3bce4d0bd6e69fde7d7df30
parenta900898fce49cc70cc8721b5c550945c471d20b6 (diff)
downloadldap_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.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/str.c b/str.c
index 53d02e9..f5908c9 100644
--- a/str.c
+++ b/str.c
@@ -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;