浏览代码

stdlib: Corrected implementation of SDL_wcsncmp.

It was a copy/paste of SDL_strcmp, apparently, not SDL_strncmp, so it ignored
the maxlen parameter.

Thanks to Jack Powell for pointing this out!
Ryan C. Gordon 5 年之前
父节点
当前提交
e410b34f92
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      src/stdlib/SDL_string.c

+ 7 - 2
src/stdlib/SDL_string.c

@@ -516,13 +516,18 @@ SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen)
 #if defined(HAVE_WCSNCMP)
     return wcsncmp(str1, str2, maxlen);
 #else
-    while (*str1 && *str2) {
+    while (*str1 && *str2 && maxlen) {
         if (*str1 != *str2)
             break;
         ++str1;
         ++str2;
+        --maxlen;
     }
-    return (int)(*str1 - *str2);
+    if (!maxlen) {
+        return 0;
+    }
+    return (int) (*str1 - *str2);
+
 #endif /* HAVE_WCSNCMP */
 }