summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2020-01-12 10:11:54 -0700
committerKarl Williamson <khw@cpan.org>2020-01-13 20:54:05 -0700
commit1ab100a8598da3fcda1b313c7a6415231a170eea (patch)
tree959c120e5f7b9c16d9612819836d054fb74cdae9 /util.c
parent7bea1fb03caa036528182ef907f72095b5d91dea (diff)
downloadperl-1ab100a8598da3fcda1b313c7a6415231a170eea.tar.gz
Rewrite and inline my_strnlen()
This commit changes this function to use memchr() instead of looping byte-by-byte through the string. And it inlines it into 3 lines of code. This should give comparable performance to a native libc strnlen().
Diffstat (limited to 'util.c')
-rw-r--r--util.c30
1 files changed, 0 insertions, 30 deletions
diff --git a/util.c b/util.c
index edd7dc53a5..88752653c9 100644
--- a/util.c
+++ b/util.c
@@ -5574,36 +5574,6 @@ Perl_my_strlcpy(char *dst, const char *src, Size_t size)
}
#endif
-/*
-=for apidoc my_strnlen
-
-The C library C<strnlen> if available, or a Perl implementation of it.
-
-C<my_strnlen()> computes the length of the string, up to C<maxlen>
-characters. It will will never attempt to address more than C<maxlen>
-characters, making it suitable for use with strings that are not
-guaranteed to be NUL-terminated.
-
-=cut
-
-Description stolen from http://man.openbsd.org/strnlen.3,
-implementation stolen from PostgreSQL.
-*/
-#ifndef HAS_STRNLEN
-Size_t
-Perl_my_strnlen(const char *str, Size_t maxlen)
-{
- const char *p = str;
-
- PERL_ARGS_ASSERT_MY_STRNLEN;
-
- while(maxlen-- && *p)
- p++;
-
- return p - str;
-}
-#endif
-
#if defined(_MSC_VER) && (_MSC_VER >= 1300) && (_MSC_VER < 1400) && (WINVER < 0x0500)
/* VC7 or 7.1, building with pre-VC7 runtime libraries. */
long _ftol( double ); /* Defined by VC6 C libs. */