From 8f7cf726362502d4ab97f8fcac76ef4767c72ef2 Mon Sep 17 00:00:00 2001 From: Daniel Kochmanski Date: Tue, 2 May 2017 08:04:41 +0200 Subject: [PATCH] delete-package: remove local nickname bits --- src/c/package.d | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/c/package.d b/src/c/package.d index b8064490a..e15e38477 100644 --- a/src/c/package.d +++ b/src/c/package.d @@ -646,6 +646,24 @@ cl_delete_package(cl_object p) ecl_unuse_package(p, ECL_CONS_CAR(l)); } + /* 3) Now remove local nickname related bits. */ + while (!Null(l = p->pack.local_nicknames)) { + cl_object nickname = ECL_CONS_CAR(l); + si_remove_package_local_nickname(ECL_CONS_CAR(nickname), p); + } + + while (!Null(l = p->pack.nicknamedby)) { + cl_object nicknaming = ECL_CONS_CAR(l); + cl_object nicklist; + while (!Null(nicklist = nicknaming->pack.local_nicknames)) { + cl_object nickname = ECL_CONS_CAR(nicklist); + if (ECL_CONS_CDR(nickname) == p) { + si_remove_package_local_nickname(ECL_CONS_CAR(nickname), nicknaming); + break; + } + } + } + ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(ecl_process_env()) { for (hash = p->pack.internal, i = 0; i < hash->hash.size; i++) if (hash->hash.data[i].key != OBJNULL) {