From 614c1e410e19ca3bf5c014e359d35b74de2fe4f9 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Fri, 16 Feb 2024 23:01:02 -0300 Subject: refactor: reduce some aliasing Reduce some variable aliasing, just in case this is what is triggering possible LuaJIT bugs on the MIPS-based LoongArch architecture. See #1553. --- src/luarocks/deps.lua | 14 ++++++-------- src/luarocks/manif/writer.lua | 10 +++++++--- 2 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua index 6f8990d7..0b9ca8b5 100644 --- a/src/luarocks/deps.lua +++ b/src/luarocks/deps.lua @@ -609,12 +609,12 @@ end -- to build a transitive closure of all dependent packages. -- Additionally ensures that `dependencies` table of the manifest is up-to-date. -- @param results table: The results table being built, maps package names to versions. --- @param manifest table: The manifest table containing dependencies. +-- @param mdeps table: The manifest dependencies table. -- @param name string: Package name. -- @param version string: Package version. -function deps.scan_deps(results, manifest, name, version, deps_mode) +function deps.scan_deps(results, mdeps, name, version, deps_mode) assert(type(results) == "table") - assert(type(manifest) == "table") + assert(type(mdeps) == "table") assert(type(name) == "string" and not name:match("/")) assert(type(version) == "string") @@ -623,10 +623,8 @@ function deps.scan_deps(results, manifest, name, version, deps_mode) if results[name] then return end - if not manifest.dependencies then manifest.dependencies = {} end - local md = manifest.dependencies - if not md[name] then md[name] = {} end - local mdn = md[name] + if not mdeps[name] then mdeps[name] = {} end + local mdn = mdeps[name] local dependencies = mdn[version] local rocks_provided if not dependencies then @@ -647,7 +645,7 @@ function deps.scan_deps(results, manifest, name, version, deps_mode) local matched = match_all_deps(dependencies, get_versions) results[name] = version for _, match in pairs(matched) do - deps.scan_deps(results, manifest, match.name, match.version, deps_mode) + deps.scan_deps(results, mdeps, match.name, match.version, deps_mode) end end diff --git a/src/luarocks/manif/writer.lua b/src/luarocks/manif/writer.lua index a435d29e..e39137c2 100644 --- a/src/luarocks/manif/writer.lua +++ b/src/luarocks/manif/writer.lua @@ -91,13 +91,17 @@ local function update_dependencies(manifest, deps_mode) assert(type(manifest) == "table") assert(type(deps_mode) == "string") + if not manifest.dependencies then manifest.dependencies = {} end + local mdeps = manifest.dependencies + for pkg, versions in pairs(manifest.repository) do for version, repositories in pairs(versions) do for _, repo in ipairs(repositories) do if repo.arch == "installed" then - repo.dependencies = {} - deps.scan_deps(repo.dependencies, manifest, pkg, version, deps_mode) - repo.dependencies[pkg] = nil + local rd = {} + repo.dependencies = rd + deps.scan_deps(rd, mdeps, pkg, version, deps_mode) + rd[pkg] = nil end end end -- cgit v1.2.3-55-g6feb