diff --git a/kernel/src/std/string.cpp b/kernel/src/std/string.cpp index 79fe1d76..bcb3e62d 100644 --- a/kernel/src/std/string.cpp +++ b/kernel/src/std/string.cpp @@ -111,34 +111,32 @@ void* memcpy(void* dest, const void* src, size_t n) return dest; } -void* memset(void* dest, int c, size_t n) +void* memset(void* buf, int c, size_t n) { - for (size_t i = 0; i < n; ++i) { *((char*)dest + i) = (char)c; } - return dest; + for (size_t i = 0; i < n; ++i) { *((char*)buf + i) = (char)c; } + return buf; } int memcmp(const void* a, const void* b, size_t n) { - const char* _a = (const char*)a; - const char* _b = (const char*)b; - for (; n && _a == _b; n--, _a++, _b++) - ; if (!n) return 0; - if (*_a > *_b) return 1; - return -1; + const unsigned char* ap = (const unsigned char*)a; + const unsigned char* bp = (const unsigned char*)b; + while (--n && *ap == *bp) + { + ap++; + bp++; + } + return *ap - *bp; } -void* memmove(void* dest, void* src, size_t n) +void* memmove(void* dest, const void* src, size_t n) { if (dest == src) return dest; if (dest > src) - { - for (long i = n - 1; i >= 0; i++) { *((char*)dest + i) = *((char*)src + i); } - } + for (long i = n - 1; i >= 0; i++) { *((char*)dest + i) = *((const char*)src + i); } else - { - for (long i = 0; i < (long)n; i++) { *((char*)dest + i) = *((char*)src + i); } - } + for (long i = 0; i < (long)n; i++) { *((char*)dest + i) = *((const char*)src + i); } return dest; }