From 7574f1a5ca0ef7cf8f809c2c471954bf0c4508ff Mon Sep 17 00:00:00 2001 From: ansstuff Date: Sun, 5 Aug 2012 22:13:49 +0000 Subject: [PATCH] Fixed Lua drag-n-drop loading --- src/drivers/win/window.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index aebe1f27..64e2fa26 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -1378,8 +1378,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) UINT len; len=DragQueryFileW((HDROP)wParam,0,0,0)+1; - wchar_t* wftmp; - wftmp=new wchar_t[len]; + wchar_t* wftmp = new wchar_t[len]; { DragQueryFileW((HDROP)wParam,0,wftmp,len); std::string fileDropped = wcstombs(wftmp); @@ -1482,13 +1481,22 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) //------------------------------------------------------- //Check if Lua file //------------------------------------------------------- - #ifdef _S9XLUA_H +#ifdef _S9XLUA_H else if (!(fileDropped.find(".lua") == string::npos) && (fileDropped.find(".lua") == fileDropped.length()-4)) { + // HACK because luaL_loadfile doesn't work with multibyte paths + char *ftmp; + len = DragQueryFile((HDROP)wParam, 0, 0, 0) + 1; + if ((ftmp=(char*)malloc(len))) + { + DragQueryFile((HDROP)wParam, 0, ftmp, len); + fileDropped = ftmp; + free(ftmp); + } FCEU_LoadLuaCode(fileDropped.c_str()); UpdateLuaConsole(fileDropped.c_str()); } - #endif +#endif //------------------------------------------------------- //Check if Ram Watch file //-------------------------------------------------------