package.el: various fixes.
authorBastien Guerry <bzg@gnu.org>
Wed, 8 Jan 2014 11:19:30 +0000 (12:19 +0100)
committerBastien Guerry <bzg@gnu.org>
Wed, 8 Jan 2014 11:19:30 +0000 (12:19 +0100)
* emacs-lisp/package.el (package-installed-p): First check if the
package name is in package-alist.
(package-delete): Correctly delete the package from package-alist.

lisp/ChangeLog
lisp/emacs-lisp/package.el

index 9ff78a4..a39294a 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-08  Bastien Guerry  <bzg@gnu.org>
+
+       * emacs-lisp/package.el (package-installed-p): First check if the
+       package name is in package-alist.
+       (package-delete): Correctly delete the package from package-alist.
+
 2014-01-08  Daiki Ueno  <ueno@gnu.org>
 
        * emacs-lisp/package.el (url-recreate-url): Declare.
index 64a9eff..a89bf40 100644 (file)
@@ -881,13 +881,14 @@ GnuPG keyring is located under \"gnupg\" in `package-user-dir'."
   "Return true if PACKAGE, of MIN-VERSION or newer, is installed.
 MIN-VERSION should be a version list."
   (unless package--initialized (error "package.el is not yet initialized!"))
+  (when (assq package package-alist)
     (or
      (let ((pkg-descs (cdr (assq package package-alist))))
        (and pkg-descs
             (version-list-<= min-version
                              (package-desc-version (car pkg-descs)))))
      ;; Also check built-in packages.
-     (package-built-in-p package min-version)))
+     (package-built-in-p package min-version))))
 
 (defun package-compute-transaction (packages requirements)
   "Return a list of packages to be installed, including PACKAGES.
@@ -1232,7 +1233,7 @@ The file can either be a tar file or an Emacs Lisp file."
            (delete-file signed-file)))
       ;; Update package-alist.
       (let* ((name (package-desc-name pkg-desc)))
-       (delete (delete pkg-desc (assq name package-alist)) package-alist))
+       (setq package-alist (delete (assq name package-alist) package-alist)))
       (message "Package `%s' deleted." (package-desc-full-name pkg-desc)))))
 
 (defun package-archive-base (desc)