diff --git a/Externals/WiiUse/Win32/wiiuse.dll b/Externals/WiiUse/Win32/wiiuse.dll
index 512b53b83f..43c39f115f 100644
Binary files a/Externals/WiiUse/Win32/wiiuse.dll and b/Externals/WiiUse/Win32/wiiuse.dll differ
diff --git a/Externals/WiiUse/Win32/wiiuse.lib b/Externals/WiiUse/Win32/wiiuse.lib
index 75c45ef4a7..ba9196a109 100644
Binary files a/Externals/WiiUse/Win32/wiiuse.lib and b/Externals/WiiUse/Win32/wiiuse.lib differ
diff --git a/Externals/WiiUse/X64/wiiuse.dll b/Externals/WiiUse/X64/wiiuse.dll
index 46f146e382..f8e28edd22 100644
Binary files a/Externals/WiiUse/X64/wiiuse.dll and b/Externals/WiiUse/X64/wiiuse.dll differ
diff --git a/Externals/WiiUse/X64/wiiuse.lib b/Externals/WiiUse/X64/wiiuse.lib
index 196bd6b19f..40e8c29877 100644
Binary files a/Externals/WiiUse/X64/wiiuse.lib and b/Externals/WiiUse/X64/wiiuse.lib differ
diff --git a/Externals/WiiUseSrc/Src/io_win.c b/Externals/WiiUseSrc/Src/io_win.c
index 0d345c7ab3..f64f256fb2 100644
--- a/Externals/WiiUseSrc/Src/io_win.c
+++ b/Externals/WiiUseSrc/Src/io_win.c
@@ -205,8 +205,8 @@ int wiiuse_io_read(struct wiimote_t* wm) {
// This needs to be done even if ReadFile fails, essential during init
// Move the data over one, so we can add back in 0xa2
- memcpy(wm->event_buf + 1, wm->event_buf, sizeof(wm->event_buf) - 1);
- wm->event_buf[0] = 0xa2; // Put back in the crazy Data that Windows strips out
+ memmove(wm->event_buf + 1, wm->event_buf, sizeof(wm->event_buf) - 1);
+ wm->event_buf[0] = 0xa2;
ResetEvent(wm->hid_overlap.hEvent);
return 1;
@@ -224,7 +224,7 @@ int wiiuse_io_write(struct wiimote_t* wm, byte* buf, int len) {
case WIIUSE_STACK_UNKNOWN:
{
/* try to auto-detect the stack type */
- if (i = WriteFile(wm->dev_handle, buf + 1, 22, &bytes, &wm->hid_overlap)) {
+ if (i = WriteFile(wm->dev_handle, buf + 1, len - 1, &bytes, &wm->hid_overlap)) {
/* bluesoleil will always return 1 here, even if it's not connected */
wm->stack = WIIUSE_STACK_BLUESOLEIL;
return i;
@@ -243,7 +243,7 @@ int wiiuse_io_write(struct wiimote_t* wm, byte* buf, int len) {
return HidD_SetOutputReport(wm->dev_handle, buf + 1, len - 1);
case WIIUSE_STACK_BLUESOLEIL:
- return WriteFile(wm->dev_handle, buf + 1, 22, &bytes, &wm->hid_overlap);
+ return WriteFile(wm->dev_handle, buf + 1, len - 1, &bytes, &wm->hid_overlap);
}
return 0;
diff --git a/Externals/WiiUseSrc/wiiuse.vcproj b/Externals/WiiUseSrc/wiiuse.vcproj
index 1bfa3a0ede..369a261e30 100644
--- a/Externals/WiiUseSrc/wiiuse.vcproj
+++ b/Externals/WiiUseSrc/wiiuse.vcproj
@@ -51,7 +51,7 @@
/>