summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-10-16 14:30:13 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-10-16 14:30:13 +0300
commit4bb9749b21edbe9d97ea16a440501f51d5be036c (patch)
tree3812bf41208c04b3ba2761fbde0c46d27a1dbae8
parentcab7806ebaf3a570d995c128a08d5defc527db14 (diff)
MirLua:
- fixes #2589 (MirLua doesn't work correctly in 64-bit Miranda); - code cleaning; - version bump
-rw-r--r--plugins/MirLua/MirLua.vcxproj1
-rw-r--r--plugins/MirLua/MirLua.vcxproj.filters3
-rw-r--r--plugins/MirLua/src/Modules/m_core.cpp8
-rw-r--r--plugins/MirLua/src/Modules/m_http.cpp6
-rw-r--r--plugins/MirLua/src/environment.cpp8
-rw-r--r--plugins/MirLua/src/netlib.cpp20
-rw-r--r--plugins/MirLua/src/plugin.cpp10
-rw-r--r--plugins/MirLua/src/plugin.h2
-rw-r--r--plugins/MirLua/src/stdafx.h4
-rw-r--r--plugins/MirLua/src/utils.cpp4
-rw-r--r--plugins/MirLua/src/version.h2
11 files changed, 24 insertions, 44 deletions
diff --git a/plugins/MirLua/MirLua.vcxproj b/plugins/MirLua/MirLua.vcxproj
index 1c5086294c..1be3ea14b9 100644
--- a/plugins/MirLua/MirLua.vcxproj
+++ b/plugins/MirLua/MirLua.vcxproj
@@ -78,7 +78,6 @@
<PrecompiledHeaderFile>..\stdafx.h</PrecompiledHeaderFile>
</ClCompile>
<ClCompile Include="src\module_loader.cpp" />
- <ClCompile Include="src\netlib.cpp" />
<ClCompile Include="src\options.cpp" />
<ClCompile Include="src\plugin.cpp" />
<ClCompile Include="src\script.cpp" />
diff --git a/plugins/MirLua/MirLua.vcxproj.filters b/plugins/MirLua/MirLua.vcxproj.filters
index 107370fd13..4e30b4279f 100644
--- a/plugins/MirLua/MirLua.vcxproj.filters
+++ b/plugins/MirLua/MirLua.vcxproj.filters
@@ -21,9 +21,6 @@
<ClCompile Include="src\module_loader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="src\netlib.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
<ClCompile Include="src\options.cpp">
<Filter>Source Files</Filter>
</ClCompile>
diff --git a/plugins/MirLua/src/Modules/m_core.cpp b/plugins/MirLua/src/Modules/m_core.cpp
index 90f022a9dc..9a608f14af 100644
--- a/plugins/MirLua/src/Modules/m_core.cpp
+++ b/plugins/MirLua/src/Modules/m_core.cpp
@@ -21,12 +21,12 @@ static int HookEventLuaParam(void *obj, WPARAM wParam, LPARAM lParam, LPARAM par
lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
if (wParam)
- lua_pushinteger(L, wParam);
+ lua_pushlightuserdata(L, (void *)wParam);
else
lua_pushnil(L);
if (lParam)
- lua_pushinteger(L, lParam);
+ lua_pushlightuserdata(L, (void *)lParam);
else
lua_pushnil(L);
@@ -122,8 +122,8 @@ INT_PTR CreateServiceFunctionLuaStateParam(void *obj, WPARAM wParam, LPARAM lPar
int ref = param;
lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
- lua_pushinteger(L, wParam);
- lua_pushinteger(L, lParam);
+ lua_pushlightuserdata(L, (void *)wParam);
+ lua_pushlightuserdata(L, (void *)lParam);
luaM_pcall(L, 2, 1);
INT_PTR res = lua_tointeger(L, 1);
diff --git a/plugins/MirLua/src/Modules/m_http.cpp b/plugins/MirLua/src/Modules/m_http.cpp
index 006c7e9876..a3c501c44e 100644
--- a/plugins/MirLua/src/Modules/m_http.cpp
+++ b/plugins/MirLua/src/Modules/m_http.cpp
@@ -68,7 +68,7 @@ static void SetContent(NETLIBHTTPREQUEST *request, const char *data, size_t leng
if (request->pData != nullptr)
mir_free(request->pData);
request->pData = mir_strdup(data);
- request->dataLength = length;
+ request->dataLength = (int)length;
}
/***********************************************/
@@ -205,7 +205,7 @@ static const luaL_Reg contentApi[] =
static NETLIBHTTPREQUEST* response_Create(lua_State *L, NETLIBHTTPREQUEST *request)
{
- NETLIBHTTPREQUEST *response = Netlib_HttpTransaction(g_hNetlib, request);
+ NETLIBHTTPREQUEST *response = Netlib_HttpTransaction(g_plugin.hNetlib, request);
NETLIBHTTPREQUEST **udata = (NETLIBHTTPREQUEST**)lua_newuserdata(L, sizeof(NETLIBHTTPREQUEST*));
*udata = response;
luaL_setmetatable(L, MT_NETLIBHTTPRESPONSE);
@@ -431,7 +431,7 @@ static int request_Send(lua_State *L)
static int request__index(lua_State *L)
{
- NETLIBHTTPREQUEST *request = *(NETLIBHTTPREQUEST**)luaL_checkudata(L, 1, MT_NETLIBHTTPREQUEST);
+ luaL_checkudata(L, 1, MT_NETLIBHTTPREQUEST);
const char *key = lua_tostring(L, 2);
if (mir_strcmpi(key, "Method") == 0)
diff --git a/plugins/MirLua/src/environment.cpp b/plugins/MirLua/src/environment.cpp
index e0b3ed5344..2c34af11bd 100644
--- a/plugins/MirLua/src/environment.cpp
+++ b/plugins/MirLua/src/environment.cpp
@@ -58,12 +58,12 @@ static int HookEventEnvParam(void *obj, WPARAM wParam, LPARAM lParam, LPARAM par
lua_rawgeti(env->L, LUA_REGISTRYINDEX, ref);
if (wParam)
- lua_pushinteger(env->L, wParam);
+ lua_pushlightuserdata(env->L, (void*)wParam);
else
lua_pushnil(env->L);
if (lParam)
- lua_pushinteger(env->L, lParam);
+ lua_pushlightuserdata(env->L, (void *)lParam);
else
lua_pushnil(env->L);
@@ -98,8 +98,8 @@ static INT_PTR CreateServiceFunctionEnvParam(void *obj, WPARAM wParam, LPARAM lP
int ref = param;
lua_rawgeti(env->L, LUA_REGISTRYINDEX, ref);
- lua_pushinteger(env->L, wParam);
- lua_pushinteger(env->L, lParam);
+ lua_pushlightuserdata(env->L, (void *)wParam);
+ lua_pushlightuserdata(env->L, (void *)lParam);
luaM_pcall(env->L, 2, 1);
INT_PTR res = lua_tointeger(env->L, 1);
diff --git a/plugins/MirLua/src/netlib.cpp b/plugins/MirLua/src/netlib.cpp
deleted file mode 100644
index 246ed9ce04..0000000000
--- a/plugins/MirLua/src/netlib.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "stdafx.h"
-
-HNETLIBUSER g_hNetlib = nullptr;
-
-void LoadNetlib()
-{
- NETLIBUSER nlu = {};
- nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS;
- nlu.szDescriptiveName.a = MODULENAME;
- nlu.szSettingsModule = MODULENAME;
- g_hNetlib = Netlib_RegisterUser(&nlu);
-}
-
-void UnloadNetlib()
-{
- if (g_hNetlib) {
- Netlib_CloseHandle(g_hNetlib);
- g_hNetlib = nullptr;
- }
-} \ No newline at end of file
diff --git a/plugins/MirLua/src/plugin.cpp b/plugins/MirLua/src/plugin.cpp
index e64d52863d..3ca4a9524e 100644
--- a/plugins/MirLua/src/plugin.cpp
+++ b/plugins/MirLua/src/plugin.cpp
@@ -123,8 +123,13 @@ int CMPlugin::OnModulesLoaded(WPARAM, LPARAM)
int CMPlugin::Load()
{
+ NETLIBUSER nlu = {};
+ nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS;
+ nlu.szDescriptiveName.a = MODULENAME;
+ nlu.szSettingsModule = MODULENAME;
+ hNetlib = Netlib_RegisterUser(&nlu);
+
LoadIcons();
- LoadNetlib();
LoadLua();
HookPluginEvent(ME_SYSTEM_MODULESLOADED, &CMPlugin::OnModulesLoaded);
@@ -134,8 +139,9 @@ int CMPlugin::Load()
int CMPlugin::Unload()
{
+ Netlib_CloseHandle(hNetlib);
+
UnloadLua();
- UnloadNetlib();
return 0;
}
diff --git a/plugins/MirLua/src/plugin.h b/plugins/MirLua/src/plugin.h
index dc07965144..bf6b99effe 100644
--- a/plugins/MirLua/src/plugin.h
+++ b/plugins/MirLua/src/plugin.h
@@ -5,6 +5,8 @@ struct CMPlugin : public PLUGIN<CMPlugin>
friend class CMLuaOptionsMain;
friend class CMLuaEvaluateOptions;
+ HNETLIBUSER hNetlib = nullptr;
+
private:
lua_State *L;
diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h
index d908b7b36a..d31e8b55c0 100644
--- a/plugins/MirLua/src/stdafx.h
+++ b/plugins/MirLua/src/stdafx.h
@@ -68,10 +68,6 @@ extern HANDLE g_hScriptsFolder;
#define LUATEXTSCRIPTEXT L"lua"
#define LUAPRECSCRIPTEXT L"luac"
-extern HNETLIBUSER g_hNetlib;
-void LoadNetlib();
-void UnloadNetlib();
-
void LoadIcons();
/* utils */
diff --git a/plugins/MirLua/src/utils.cpp b/plugins/MirLua/src/utils.cpp
index f1ac61ae85..7c0b56134c 100644
--- a/plugins/MirLua/src/utils.cpp
+++ b/plugins/MirLua/src/utils.cpp
@@ -4,7 +4,7 @@ void Log(const char *format, ...)
{
va_list args;
va_start(args, format);
- Netlib_Log(g_hNetlib, CMStringA().FormatV(format, args));
+ Netlib_Log(g_plugin.hNetlib, CMStringA().FormatV(format, args));
va_end(args);
}
@@ -12,7 +12,7 @@ void Log(const wchar_t *format, ...)
{
va_list args;
va_start(args, format);
- Netlib_LogW(g_hNetlib, CMStringW().FormatV(format, args));
+ Netlib_LogW(g_plugin.hNetlib, CMStringW().FormatV(format, args));
va_end(args);
}
diff --git a/plugins/MirLua/src/version.h b/plugins/MirLua/src/version.h
index fc519ba731..985d5663be 100644
--- a/plugins/MirLua/src/version.h
+++ b/plugins/MirLua/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 11
#define __RELEASE_NUM 9
-#define __BUILD_NUM 1
+#define __BUILD_NUM 2
#include <stdver.h>