return length from _mi_snprintf

This commit is contained in:
daanx 2025-01-04 22:01:28 -08:00
parent a415940604
commit de0324e1a7
3 changed files with 16 additions and 15 deletions

View file

@ -64,8 +64,8 @@ terms of the MIT license. A copy of the license can be found in the file
// "libc.c" // "libc.c"
#include <stdarg.h> #include <stdarg.h>
void _mi_vsnprintf(char* buf, size_t bufsize, const char* fmt, va_list args); int _mi_vsnprintf(char* buf, size_t bufsize, const char* fmt, va_list args);
void _mi_snprintf(char* buf, size_t buflen, const char* fmt, ...); int _mi_snprintf(char* buf, size_t buflen, const char* fmt, ...);
char _mi_toupper(char c); char _mi_toupper(char c);
int _mi_strnicmp(const char* s, const char* t, size_t n); int _mi_strnicmp(const char* s, const char* t, size_t n);
void _mi_strlcpy(char* dest, const char* src, size_t dest_size); void _mi_strlcpy(char* dest, const char* src, size_t dest_size);

View file

@ -160,8 +160,8 @@ static void mi_out_num(uintmax_t x, size_t base, char prefix, char** out, char*
#define MI_NEXTC() c = *in; if (c==0) break; in++; #define MI_NEXTC() c = *in; if (c==0) break; in++;
void _mi_vsnprintf(char* buf, size_t bufsize, const char* fmt, va_list args) { int _mi_vsnprintf(char* buf, size_t bufsize, const char* fmt, va_list args) {
if (buf == NULL || bufsize == 0 || fmt == NULL) return; if (buf == NULL || bufsize == 0 || fmt == NULL) return 0;
buf[bufsize - 1] = 0; buf[bufsize - 1] = 0;
char* const end = buf + (bufsize - 1); char* const end = buf + (bufsize - 1);
const char* in = fmt; const char* in = fmt;
@ -265,11 +265,13 @@ void _mi_vsnprintf(char* buf, size_t bufsize, const char* fmt, va_list args) {
} }
mi_assert_internal(out <= end); mi_assert_internal(out <= end);
*out = 0; *out = 0;
return (int)(out - buf);
} }
void _mi_snprintf(char* buf, size_t buflen, const char* fmt, ...) { int _mi_snprintf(char* buf, size_t buflen, const char* fmt, ...) {
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
_mi_vsnprintf(buf, buflen, fmt, args); const int written = _mi_vsnprintf(buf, buflen, fmt, args);
va_end(args); va_end(args);
return written;
} }

View file

@ -1003,7 +1003,6 @@ void* _mi_malloc_generic(mi_heap_t* heap, size_t size, bool zero, size_t huge_al
} }
// move singleton pages to the full queue // move singleton pages to the full queue
if (page->reserved == page->used) { if (page->reserved == page->used) {
mi_assert_internal(page->reserved == 1);
mi_page_to_full(page, mi_page_queue_of(page)); mi_page_to_full(page, mi_page_queue_of(page));
} }
return p; return p;