From 3e9bfa7d9dd0e8f4a846d45261df1dcb838b60d8 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Fri, 29 Mar 2024 15:52:29 +0100 Subject: Replace CRT's strlen() and memcpy() by open coded variants After this change there is no usage of of CRT library function. This allows to build CRT-neutral variant of libdl.dll library, which can be used in any application. --- src/dlfcn.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/dlfcn.c b/src/dlfcn.c index be66cac..1830b20 100644 --- a/src/dlfcn.c +++ b/src/dlfcn.c @@ -30,7 +30,6 @@ #include #endif #include -#include /* strlen() and memcpy() */ /* Older versions do not have this type */ #if _WIN32_WINNT < 0x0500 @@ -210,19 +209,15 @@ static BOOL error_occurred; static void save_err_str( const char *str, DWORD dwMessageId ) { DWORD ret; - size_t pos, len; - - len = strlen( str ); - if( len > sizeof( error_buffer ) - 5 ) - len = sizeof( error_buffer ) - 5; + size_t pos, i; /* Format error message to: * "": */ pos = 0; error_buffer[pos++] = '"'; - memcpy( error_buffer + pos, str, len ); - pos += len; + for( i = 0; i < sizeof( error_buffer ) - 5 && str[i] != '\0'; i++ ) + error_buffer[pos++] = str[i]; error_buffer[pos++] = '"'; error_buffer[pos++] = ':'; error_buffer[pos++] = ' '; @@ -413,7 +408,11 @@ void *dlopen( const char *file, int mode ) char lpFileName[MAX_PATH]; size_t i, len; - len = strlen( file ); + for( len = 0; ; len++ ) + { + if( file[len] == '\0' ) + break; + } if( len >= sizeof( lpFileName ) ) { -- cgit v1.2.3-55-g6feb