Commit 7527c8d3d78a09620efab3634cd2aa9f67a29a49

Ozkan Sezer 2022-01-11T11:33:02

hidapi, libusb: provide a wcsdup implementation if it is not available. similar to mac and android versions..

diff --git a/src/hidapi/libusb/hid.c b/src/hidapi/libusb/hid.c
index d4fd9da..296af5b 100644
--- a/src/hidapi/libusb/hid.c
+++ b/src/hidapi/libusb/hid.c
@@ -31,9 +31,24 @@
 #include "SDL_thread.h"
 #include "SDL_mutex.h"
 
-#if defined(HAVE__WCSDUP) && !defined(HAVE_WCSDUP)
+#ifndef HAVE_WCSDUP
+#ifdef HAVE__WCSDUP
 #define wcsdup _wcsdup
+#else
+#define wcsdup _dupwcs
+static wchar_t *_dupwcs(const wchar_t *src)
+{
+    wchar_t *dst = NULL;
+    if (src) {
+        size_t len = SDL_wcslen(src) + 1;
+        len *= sizeof(wchar_t);
+        dst = (wchar_t *) malloc(len);
+        if (dst) memcpy(dst, src, len);
+    }
+    return dst;
+}
 #endif
+#endif /* HAVE_WCSDUP */
 
 #include <libusb.h>
 #include <locale.h> /* setlocale */