diff lisp/arc-mode.el @ 90399:a5812696f7bf unicode-pre-font-backend

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 274-284) - Update from CVS - Update etc/MORE.STUFF. - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 101) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-62
author Miles Bader <miles@gnu.org>
date Wed, 17 May 2006 07:46:49 +0000
parents 146cd8369025 ff708eaf43ab
children a8190f7e546e
line wrap: on
line diff
--- a/lisp/arc-mode.el	Mon May 15 03:48:50 2006 +0000
+++ b/lisp/arc-mode.el	Wed May 17 07:46:49 2006 +0000
@@ -1379,7 +1379,11 @@
 			   visual)
 	      files (cons (vector efnname ifnname fiddle nil (1- p))
                           files)
-              p (+ p 29 csize))))
+	      ;; p needs to stay an integer, since we use it in char-after
+	      ;; above.  Passing through `round' limits the compressed size
+	      ;; to most-positive-fixnum, but if the compressed size exceeds
+	      ;; that, we cannot visit the archive anyway.
+              p (+ p 29 (round csize)))))
     (goto-char (point-min))
     (let ((dash (concat "- --------  -----------  --------  "
 			(make-string maxlen ?-)
@@ -1519,9 +1523,13 @@
 	      files (cons (vector prname ifnname fiddle mode (1- p))
                           files))
 	(cond ((= hdrlvl 1)
-	       (setq p (+ p hsize 2 csize)))
+	       ;; p needs to stay an integer, since we use it in goto-char
+	       ;; above.  Passing through `round' limits the compressed size
+	       ;; to most-positive-fixnum, but if the compressed size exceeds
+	       ;; that, we cannot visit the archive anyway.
+	       (setq p (+ p hsize 2 (round csize))))
 	      ((or (= hdrlvl 2) (= hdrlvl 0))
-	       (setq p (+ p thsize 2 csize))))
+	       (setq p (+ p thsize 2 (round csize)))))
 	))
     (goto-char (point-min))
     (let ((dash (concat (if archive-alternate-display