Browse Source

Lua: use positive index for better readability, allow unicode identifiers for Lua5.4

bel2125 4 năm trước cách đây
mục cha
commit
9a60f9f27d
2 tập tin đã thay đổi với 16 bổ sung11 xóa
  1. 2 2
      VisualStudio/lua_lib/lua_lib.vcxproj
  2. 14 9
      src/mod_lua.inl

+ 2 - 2
VisualStudio/lua_lib/lua_lib.vcxproj

@@ -99,7 +99,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>LUA_COMPAT_ALL;LUA_UCID;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
@@ -133,7 +133,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>LUA_COMPAT_ALL;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>LUA_COMPAT_ALL;LUA_UCID;THREADSAFE=1;SQLITE_ENABLE_FTS3;SQLITE_ENABLE_FTS3_PARENTHESIS;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(ProjectDir)..\..\src\third_party\lua-5.2.4\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>

+ 14 - 9
src/mod_lua.inl

@@ -248,7 +248,7 @@ lsp_sock_close(lua_State *L)
 	size_t s;
 	SOCKET *psock;
 
-	if ((num_args == 1) && lua_istable(L, -1)) {
+	if ((num_args == 1) && lua_istable(L, 1)) {
 		lua_getfield(L, -1, "sock");
 		psock = (SOCKET *)lua_tolstring(L, -1, &s);
 		if (s != sizeof(SOCKET)) {
@@ -272,7 +272,7 @@ lsp_sock_recv(lua_State *L)
 	size_t s;
 	SOCKET *psock;
 
-	if ((num_args == 1) && lua_istable(L, -1)) {
+	if ((num_args == 1) && lua_istable(L, 1)) {
 		lua_getfield(L, -1, "sock");
 		psock = (SOCKET *)lua_tolstring(L, -1, &s);
 		if (s != sizeof(SOCKET)) {
@@ -330,9 +330,9 @@ lsp_sock_gc(lua_State *L)
 	size_t s;
 	SOCKET *psock;
 
-	if ((num_args == 1) && lua_istable(L, -1)) {
+	if ((num_args == 1) && lua_istable(L, 1)) {
 		lua_getfield(L, -1, "sock");
-		psock = (SOCKET *)lua_tolstring(L, -1, &s);
+		psock = (SOCKET *)lua_tolstring(L, 1, &s);
 		if (s != sizeof(SOCKET)) {
 			return luaL_error(
 			    L,
@@ -364,12 +364,17 @@ lsp_connect(lua_State *L)
 	union usa sa;
 	int ok;
 
-	if ((num_args == 3) && lua_isstring(L, -3) && lua_isnumber(L, -2)
-	    && lua_isnumber(L, -1)) {
+	if ((num_args == 3) && lua_isstring(L, 1) && lua_isnumber(L, 2)
+	    && lua_isnumber(L, 3)) {
+
+		const char *host = lua_tostring(L, 1);
+		const int port = lua_tostring(L, 2);
+		const int is_ssl = lua_tostring(L, 3);
+
 		ok = connect_socket(NULL,
-		                    lua_tostring(L, -3),
-		                    (int)lua_tonumber(L, -2),
-		                    (int)lua_tonumber(L, -1),
+		                    host,
+		                    port,
+		                    is_ssl,
 		                    ebuf,
 		                    sizeof(ebuf),
 		                    &sock,