88
99#include " src/stdlib/setenv.h"
1010#include " environ_internal.h"
11+ #include " hdr/func/free.h"
12+ #include " hdr/func/malloc.h"
1113#include " src/__support/CPP/string_view.h"
1214#include " src/__support/common.h"
1315#include " src/__support/libc_errno.h"
1416#include " src/__support/macros/config.h"
15- #include " src/string/memcpy.h"
16- #include " src/string/strlen.h"
17-
18- // We use extern "C" declarations for malloc/free instead of including
19- // src/stdlib/malloc.h and src/stdlib/free.h. This allows the implementation
20- // to work with different allocator implementations, particularly in integration
21- // tests which provide a simple bump allocator. The extern "C" linkage ensures
22- // we use whatever allocator is linked with the test or application.
23- extern " C" void *malloc (size_t );
24- extern " C" void free (void *);
17+ #include " src/string/memory_utils/inline_memcpy.h"
18+ #include " src/string/string_utils.h"
2519
2620namespace LIBC_NAMESPACE_DECL {
2721
@@ -64,8 +58,8 @@ LLVM_LIBC_FUNCTION(int, setenv,
6458
6559 // Need to replace the value
6660 // Calculate size for "name=value" string
67- size_t name_len = LIBC_NAMESPACE::strlen (name);
68- size_t value_len = LIBC_NAMESPACE::strlen (value);
61+ size_t name_len = LIBC_NAMESPACE::internal::string_length (name);
62+ size_t value_len = LIBC_NAMESPACE::internal::string_length (value);
6963 size_t total_len =
7064 name_len + 1 + value_len + 1 ; // name + '=' + value + '\0'
7165
@@ -77,9 +71,9 @@ LLVM_LIBC_FUNCTION(int, setenv,
7771 }
7872
7973 // Build "name=value" string
80- LIBC_NAMESPACE::memcpy (new_string, name, name_len);
74+ LIBC_NAMESPACE::inline_memcpy (new_string, name, name_len);
8175 new_string[name_len] = ' =' ;
82- LIBC_NAMESPACE::memcpy (new_string + name_len + 1 , value, value_len);
76+ LIBC_NAMESPACE::inline_memcpy (new_string + name_len + 1 , value, value_len);
8377 new_string[name_len + 1 + value_len] = ' \0 ' ;
8478
8579 // Replace in environ array
@@ -107,8 +101,8 @@ LLVM_LIBC_FUNCTION(int, setenv,
107101 }
108102
109103 // Calculate size for "name=value" string
110- size_t name_len = LIBC_NAMESPACE::strlen (name);
111- size_t value_len = LIBC_NAMESPACE::strlen (value);
104+ size_t name_len = LIBC_NAMESPACE::internal::string_length (name);
105+ size_t value_len = LIBC_NAMESPACE::internal::string_length (value);
112106 size_t total_len = name_len + 1 + value_len + 1 ; // name + '=' + value + '\0'
113107
114108 char *new_string = reinterpret_cast <char *>(malloc (total_len));
@@ -119,9 +113,9 @@ LLVM_LIBC_FUNCTION(int, setenv,
119113 }
120114
121115 // Build "name=value" string
122- LIBC_NAMESPACE::memcpy (new_string, name, name_len);
116+ LIBC_NAMESPACE::inline_memcpy (new_string, name, name_len);
123117 new_string[name_len] = ' =' ;
124- LIBC_NAMESPACE::memcpy (new_string + name_len + 1 , value, value_len);
118+ LIBC_NAMESPACE::inline_memcpy (new_string + name_len + 1 , value, value_len);
125119 new_string[name_len + 1 + value_len] = ' \0 ' ;
126120
127121 // Add to environ array
0 commit comments