# HG changeset patch # User Eli Zaretskii # Date 1147804082 0 # Node ID ff708eaf43ab67c15d3ccb3d5f385c3bd3a4ed82 # Parent a561e5346aa81f089d7ea83a78fb8eb3491827fb (archive-arc-summarize, archive-lzh-summarize): Convert csize to integer when computing offsets within the compressed archive file. diff -r a561e5346aa8 -r ff708eaf43ab lisp/arc-mode.el --- a/lisp/arc-mode.el Tue May 16 11:19:39 2006 +0000 +++ b/lisp/arc-mode.el Tue May 16 18:28:02 2006 +0000 @@ -1355,7 +1355,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 ?-) @@ -1497,9 +1501,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)) (set-buffer-multibyte default-enable-multibyte-characters)