mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-06 19:38:41 +03:00
fix comments; nicer strdup/strndup
This commit is contained in:
parent
0f6d8293c7
commit
13e519202a
3 changed files with 14 additions and 16 deletions
18
src/alloc.c
18
src/alloc.c
|
@ -329,11 +329,11 @@ mi_decl_nodiscard void* mi_recalloc(void* p, size_t count, size_t size) mi_attr_
|
|||
// `strdup` using mi_malloc
|
||||
mi_decl_nodiscard mi_decl_restrict char* mi_heap_strdup(mi_heap_t* heap, const char* s) mi_attr_noexcept {
|
||||
if (s == NULL) return NULL;
|
||||
size_t n = strlen(s);
|
||||
char* t = (char*)mi_heap_malloc(heap,n+1);
|
||||
size_t len = _mi_strlen(s);
|
||||
char* t = (char*)mi_heap_malloc(heap,len+1);
|
||||
if (t == NULL) return NULL;
|
||||
_mi_memcpy(t, s, n);
|
||||
t[n] = 0;
|
||||
_mi_memcpy(t, s, len);
|
||||
t[len] = 0;
|
||||
return t;
|
||||
}
|
||||
|
||||
|
@ -344,13 +344,11 @@ mi_decl_nodiscard mi_decl_restrict char* mi_strdup(const char* s) mi_attr_noexce
|
|||
// `strndup` using mi_malloc
|
||||
mi_decl_nodiscard mi_decl_restrict char* mi_heap_strndup(mi_heap_t* heap, const char* s, size_t n) mi_attr_noexcept {
|
||||
if (s == NULL) return NULL;
|
||||
const char* end = (const char*)memchr(s, 0, n); // find end of string in the first `n` characters (returns NULL if not found)
|
||||
const size_t m = (end != NULL ? (size_t)(end - s) : n); // `m` is the minimum of `n` or the end-of-string
|
||||
mi_assert_internal(m <= n);
|
||||
char* t = (char*)mi_heap_malloc(heap, m+1);
|
||||
const size_t len = _mi_strnlen(s,n); // len <= n
|
||||
char* t = (char*)mi_heap_malloc(heap, len+1);
|
||||
if (t == NULL) return NULL;
|
||||
_mi_memcpy(t, s, m);
|
||||
t[m] = 0;
|
||||
_mi_memcpy(t, s, len);
|
||||
t[len] = 0;
|
||||
return t;
|
||||
}
|
||||
|
||||
|
|
|
@ -482,7 +482,7 @@ void _mi_prim_out_stderr( const char* msg )
|
|||
// on windows with redirection, the C runtime cannot handle locale dependent output
|
||||
// after the main thread closes so we use direct console output.
|
||||
if (!_mi_preloading()) {
|
||||
// _cputs(msg); // _cputs cannot be used at is aborts if it fails to lock the console
|
||||
// _cputs(msg); // _cputs cannot be used as it aborts when failing to lock the console
|
||||
static HANDLE hcon = INVALID_HANDLE_VALUE;
|
||||
static bool hconIsConsole;
|
||||
if (hcon == INVALID_HANDLE_VALUE) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue