Ver código fonte

LibC: Implement wmemset

Tim Schumacher 3 anos atrás
pai
commit
fa1208edfd

+ 23 - 0
Tests/LibC/TestWchar.cpp

@@ -114,6 +114,29 @@ TEST_CASE(wmemcpy)
     EXPECT_EQ(memcmp(buf, input, 8 * sizeof(wchar_t)), 0);
 }
 
+TEST_CASE(wmemset)
+{
+    auto buf_length = 8;
+    auto buf = static_cast<wchar_t*>(calloc(buf_length, sizeof(wchar_t)));
+
+    if (!buf) {
+        FAIL("Could not allocate memory for target buffer");
+        return;
+    }
+
+    wchar_t* ret = wmemset(buf, L'\U0001f41e', buf_length - 1);
+
+    EXPECT_EQ(ret, buf);
+
+    for (int i = 0; i < buf_length - 1; i++) {
+        EXPECT_EQ(buf[i], L'\U0001f41e');
+    }
+
+    EXPECT_EQ(buf[buf_length - 1], L'\0');
+
+    free(buf);
+}
+
 TEST_CASE(wcscoll)
 {
     // Check if wcscoll is sorting correctly. At the moment we are doing raw char comparisons,

+ 9 - 0
Userland/Libraries/LibC/wchar.cpp

@@ -393,4 +393,13 @@ wchar_t* wmemcpy(wchar_t* dest, const wchar_t* src, size_t n)
 
     return dest;
 }
+
+wchar_t* wmemset(wchar_t* wcs, wchar_t wc, size_t n)
+{
+    for (size_t i = 0; i < n; i++) {
+        wcs[i] = wc;
+    }
+
+    return wcs;
+}
 }

+ 1 - 0
Userland/Libraries/LibC/wchar.h

@@ -45,5 +45,6 @@ wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
 wchar_t* wcsstr(const wchar_t*, const wchar_t*);
 wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
 wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t);
+wchar_t* wmemset(wchar_t*, wchar_t, size_t);
 
 __END_DECLS