small rewrite of PR #505

This commit is contained in:
Daan 2021-12-19 10:35:12 -08:00
parent babe57aa99
commit 4808ef762b

View file

@ -415,26 +415,24 @@ void _mi_error_message(int err, const char* fmt, ...) {
// -------------------------------------------------------- // --------------------------------------------------------
static void mi_strlcpy(char* dest, const char* src, size_t dest_size) { static void mi_strlcpy(char* dest, const char* src, size_t dest_size) {
if (dest_size == 0) if (dest==NULL || src==NULL || dest_size == 0) return;
return; // copy until end of src, or when dest is (almost) full
while (*src != 0 && dest_size > 1) {
// Copy until end of 'src' or dest is (almost) full
while (*src && (dest_size > 1)) {
*dest++ = *src++; *dest++ = *src++;
--dest_size; dest_size--;
} }
// Null-terminate dest // always zero terminate
*dest = 0; *dest = 0;
} }
static void mi_strlcat(char* dest, const char* src, size_t dest_size) { static void mi_strlcat(char* dest, const char* src, size_t dest_size) {
// Skip existing data in 'dest' if (dest==NULL || src==NULL || dest_size == 0) return;
while (*dest && (dest_size > 1)) { // find end of string in the dest buffer
++dest; while (*dest != 0 && dest_size > 1) {
--dest_size; dest++;
dest_size--;
} }
// and catenate
// Concatenate src
mi_strlcpy(dest, src, dest_size); mi_strlcpy(dest, src, dest_size);
} }