Browse Source

replace `.` with `_` in symname

Amrit Bhogal 1 year ago
parent
commit
16e73fe6a2
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/luaot.c

+ 12 - 0
src/luaot.c

@@ -804,6 +804,12 @@ print_internal_searcher_windows()
     println("  const char *name = lua_tostring(lua, 1);");
     println("  char symname[512];");
     println("  snprintf(symname, sizeof(symname), \"luaopen_%%s\", name);");
+    println("  for (int i = 0; symname[i] != '\\0'; i++) {");
+    println("    if (symname[i] == '.') {");
+    println("      symname[i] = '_';");
+    println("    }");
+    println("  }");
+    printnl();
     println("  HMODULE self_handle = GetModuleHandle(NULL);");
     println("  if (!self_handle) {");
     println("    lua_pushstring(lua, \"could not get module handle\");");
@@ -838,6 +844,12 @@ void print_internal_searcher_posix()
     println("  const char *name = lua_tostring(lua, 1);");
     println("  char symname[512];");
     println("  snprintf(symname, sizeof(symname), \"luaopen_%%s\", name);");
+    println("  for (int i = 0; symname[i] != '\\0'; i++) {");
+    println("    if (symname[i] == '.') {");
+    println("      symname[i] = '_';");
+    println("    }");
+    println("  }");
+    printnl();
     println("  lua_CFunction sym = (lua_CFunction)dlsym(self_handle, symname);");
     println("  if (!sym) {");
     println("    lua_pushstring(lua, dlerror());");