From 2b56388e76952be52d849415b1ebae74b6dc4607 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 16 Mar 2021 13:32:11 -0300 Subject: manif.writer: be more resilient to a mismatched "x.init" module name in manifest Old versions of LuaRocks might get confused with modules called "x.init". This makes the manifest writer more resilient to that. --- src/luarocks/manif/writer.lua | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/luarocks/manif/writer.lua b/src/luarocks/manif/writer.lua index 8e07702c..fd891844 100644 --- a/src/luarocks/manif/writer.lua +++ b/src/luarocks/manif/writer.lua @@ -55,17 +55,26 @@ local function remove_package_items(storage, name, version, items) local package_identifier = name.."/"..version for item_name, path in pairs(items) do -- luacheck: ignore 431 - local all_identifiers = storage[item_name] + local key = item_name + local all_identifiers = storage[key] + if not all_identifiers then + key = key .. ".init" + all_identifiers = storage[key] + end - for i, identifier in ipairs(all_identifiers) do - if identifier == package_identifier then - table.remove(all_identifiers, i) - break + if all_identifiers then + for i, identifier in ipairs(all_identifiers) do + if identifier == package_identifier then + table.remove(all_identifiers, i) + break + end end - end - if #all_identifiers == 0 then - storage[item_name] = nil + if #all_identifiers == 0 then + storage[key] = nil + end + else + util.warning("Cannot find entry for " .. item_name .. " in manifest -- corrupted manifest?") end end end -- cgit v1.2.3-55-g6feb