aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2019-09-23 16:16:09 -0300
committerGitHub <noreply@github.com>2019-09-23 16:16:09 -0300
commit879c6ef01f94df18a8457a3eb78aeafc4fe0a003 (patch)
tree900236b20cc85d15658224419bb366b93efb0225
parent15d97c6d5c4e1acade2f983adb507e266b87aa93 (diff)
downloadluarocks-879c6ef01f94df18a8457a3eb78aeafc4fe0a003.tar.gz
luarocks-879c6ef01f94df18a8457a3eb78aeafc4fe0a003.tar.bz2
luarocks-879c6ef01f94df18a8457a3eb78aeafc4fe0a003.zip
manif.writer: make remove_from_manifest more resilient (#1096)
Fixes #1095.
-rw-r--r--src/luarocks/manif/writer.lua9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/luarocks/manif/writer.lua b/src/luarocks/manif/writer.lua
index d6b70a5f..44580a46 100644
--- a/src/luarocks/manif/writer.lua
+++ b/src/luarocks/manif/writer.lua
@@ -412,8 +412,17 @@ function writer.remove_from_manifest(name, version, repo, deps_mode)
412 end 412 end
413 413
414 local package_entry = manifest.repository[name] 414 local package_entry = manifest.repository[name]
415 if package_entry == nil or package_entry[version] == nil then
416 -- entry is already missing from repository, no need to do anything
417 return true
418 end
415 419
416 local version_entry = package_entry[version][1] 420 local version_entry = package_entry[version][1]
421 if not version_entry then
422 -- manifest looks corrupted, rebuild
423 return writer.make_manifest(rocks_dir, deps_mode)
424 end
425
417 remove_package_items(manifest.modules, name, version, version_entry.modules) 426 remove_package_items(manifest.modules, name, version, version_entry.modules)
418 remove_package_items(manifest.commands, name, version, version_entry.commands) 427 remove_package_items(manifest.commands, name, version, version_entry.commands)
419 428