]> git.eshelyaron.com Git - emacs.git/commitdiff
Print symbols habing a deleted home package
authorGerd Möllmann <gerd@gnu.org>
Tue, 25 Oct 2022 06:44:58 +0000 (08:44 +0200)
committerGerd Möllmann <gerd@gnu.org>
Tue, 25 Oct 2022 06:47:41 +0000 (08:47 +0200)
This can't happen in normal circumstances, but it might while
working on the package implementation itself.

* src/print.c (print_symbol): Handle symbol-packages that are
deleted, that is have a nil home package.
* src/lisp.h (PACKAGE_USE_LIST): New macro.

src/lisp.h
src/print.c

index f60583a15075144f83242774cfbb7c50997a541b..679c0d53bdcf179459790a0e1a5bc7a76ffd090a 100644 (file)
@@ -2268,6 +2268,12 @@ PACKAGE_NAMEX (Lisp_Object package)
   return XPACKAGE (package)->name;
 }
 
+INLINE Lisp_Object
+PACKAGE_USE_LIST (Lisp_Object package)
+{
+  return XPACKAGE (package)->use_list;
+}
+
 extern void init_pkg_once (void);
 extern void init_pkg (void);
 extern void syms_of_pkg (void);
index 0bae167c00ea59fd01c00c8d00a0cf7033f0e92b..132b1e1101f17c4c1d9f29e85daf0050eb0cd4bd 100644 (file)
@@ -2230,14 +2230,20 @@ print_symbol (Lisp_Object symbol, Lisp_Object printcharfun,
       print_c_string (":", printcharfun);
       check_number_p = false;
     }
-  else if (EQ (package, Vearmuffs_package))
-    ;
   else if (NILP (package))
     {
       if (!NILP (Vprint_gensym))
        print_c_string ("#:", printcharfun);
     }
-  else
+  else if (NILP (PACKAGE_NAMEX (package)))
+    {
+      /* This should not happen normally, because delete-package
+        should un-home symbols.  But it can if we have a bug
+        in pkg.el which a test catches.  */
+      print_c_string ("#<deleted package>:", printcharfun);
+      check_number_p = false;
+    }
+  else if (!EQ (package, Vearmuffs_package))
     {
       /* If the symbol is accessible, it need not be qualified.  */
       Lisp_Object status;