From 6e196748d88b830747e930c65365c9452654ab23 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 8 Jun 2022 17:55:37 -0700 Subject: [PATCH] Scripting: Hand off full filename to Lua, add directory to DLL search path --- src/script/engines/lua.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/script/engines/lua.c b/src/script/engines/lua.c index 2770e8898..24e54c88e 100644 --- a/src/script/engines/lua.c +++ b/src/script/engines/lua.c @@ -11,6 +11,10 @@ #include #include +#ifdef _WIN32 +#include +#endif + #define MAX_KEY_SIZE 128 static struct mScriptEngineContext* _luaCreate(struct mScriptEngine2*, struct mScriptContext*); @@ -476,24 +480,27 @@ bool _luaLoad(struct mScriptEngineContext* ctx, const char* filename, struct VFi free(luaContext->lastError); luaContext->lastError = NULL; } - char name[80]; + char name[PATH_MAX + 1]; if (filename) { if (*filename == '*') { snprintf(name, sizeof(name), "=%s", filename + 1); } else { +#ifdef _WIN32 + char dirname[PATH_MAX] = {0}; const char* lastSlash = strrchr(filename, '/'); const char* lastBackslash = strrchr(filename, '\\'); if (lastSlash && lastBackslash) { - if (lastSlash > lastBackslash) { - filename = lastSlash + 1; - } else { - filename = lastBackslash + 1; + if (lastSlash < lastBackslash) { + lastSlash = lastBackslash; } - } else if (lastSlash) { - filename = lastSlash + 1; } else if (lastBackslash) { - filename = lastBackslash + 1; + lastSlash = lastBackslash; } + if (lastSlash) { + strncpy(dirname, filename, lastSlash - filename); + AddDllDirectory(dirname); + } +#endif snprintf(name, sizeof(name), "@%s", filename); } filename = name;