Fix package-strip-rcs-id to be more robust.
authorChong Yidong <cyd@stupidchicken.com>
Thu, 10 Mar 2011 21:51:26 +0000 (16:51 -0500)
committerChong Yidong <cyd@stupidchicken.com>
Thu, 10 Mar 2011 21:51:26 +0000 (16:51 -0500)
See http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00396.html

* lisp/emacs-lisp/package.el (package-strip-rcs-id): Accept any version
string that does not signal an error in version-to-list.

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

index 760224f..0fbdd9d 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-10  Chong Yidong  <cyd@stupidchicken.com>
+
+       * emacs-lisp/package.el (package-strip-rcs-id): Accept any version
+       string that does not signal an error in version-to-list.
+
 2011-03-10  Michael Albinus  <michael.albinus@gmx.de>
 
        * simple.el (delete-trailing-whitespace): Return nil for the
index d90164b..2908940 100644 (file)
@@ -848,15 +848,17 @@ The package is found on one of the archives in `package-archives'."
   ;; Try to activate it.
   (package-initialize))
 
-(defun package-strip-rcs-id (v-str)
-  "Strip RCS version ID from the version string.
+(defun package-strip-rcs-id (str)
+  "Strip RCS version ID from the version string STR.
 If the result looks like a dotted numeric version, return it.
 Otherwise return nil."
-  (if v-str
-      (if (string-match "^[ \t]*[$]Revision:[ \t]\([0-9.]+\)[ \t]*[$]$" v-str)
-         (match-string 1 v-str)
-       (if (string-match "^[0-9.]*$" v-str)
-           v-str))))
+  (when str
+    (when (string-match "\\`[ \t]*[$]Revision:[ \t]+" str)
+      (setq str (substring str (match-end 0))))
+    (condition-case nil
+       (if (version-to-list str)
+           str)
+      (error nil))))
 
 (defun package-buffer-info ()
   "Return a vector describing the package in the current buffer.