Browse Source

Reduced LuaModule lifetime

Akeit0 7 months ago
parent
commit
30ca0f2d4f
1 changed files with 6 additions and 8 deletions
  1. 6 8
      src/Lua/Standard/ModuleLibrary.cs

+ 6 - 8
src/Lua/Standard/ModuleLibrary.cs

@@ -1,3 +1,5 @@
+using Lua.Runtime;
+
 namespace Lua.Standard;
 namespace Lua.Standard;
 
 
 public sealed class ModuleLibrary
 public sealed class ModuleLibrary
@@ -18,16 +20,12 @@ public sealed class ModuleLibrary
 
 
         if (!loaded.TryGetValue(arg0, out var loadedTable))
         if (!loaded.TryGetValue(arg0, out var loadedTable))
         {
         {
-            using var module = await context.State.ModuleLoader.LoadAsync(arg0, cancellationToken);
-            if (module.Type == LuaModuleType.Bytes)
-            {
-                await context.State.Load(module.ReadBytes(), module.Name).InvokeAsync(context, cancellationToken);
-            }
-            else
+            LuaClosure closure;
             {
             {
-                await context.State.Load(module.ReadText(), module.Name).InvokeAsync(context, cancellationToken);
+                using var module = await context.State.ModuleLoader.LoadAsync(arg0, cancellationToken);
+                closure = module.Type == LuaModuleType.Bytes ? context.State.Load(module.ReadBytes(), module.Name) : context.State.Load(module.ReadText(), module.Name);
             }
             }
-
+            await closure.InvokeAsync(context, cancellationToken);
             loadedTable = context.Thread.Stack.Get(context.ReturnFrameBase);
             loadedTable = context.Thread.Stack.Get(context.ReturnFrameBase);
             loaded[arg0] = loadedTable;
             loaded[arg0] = loadedTable;
         }
         }