瀏覽代碼

ox-publish: Fix arithmetic range error on some systems

* lisp/ox-publish.el (org-publish-cache-file-needs-publishing):
(org-publish-cache-ctime-of-src): Use internal time format for
timestamps.

Reported-by: Colin Baxter <m43cap@yandex.com>
<http://lists.gnu.org/r/emacs-orgmode/2019-02/msg00072.html>
Nicolas Goaziou 6 年之前
父節點
當前提交
c7f4e85389
共有 1 個文件被更改,包括 9 次插入5 次删除
  1. 9 5
      lisp/ox-publish.el

+ 9 - 5
lisp/ox-publish.el

@@ -1285,7 +1285,10 @@ the file including them will be republished as well."
     (error
      "`org-publish-cache-file-needs-publishing' called, but no cache present"))
   (let* ((key (org-publish-timestamp-filename filename pub-dir pub-func))
-	 (pstamp (org-publish-cache-get key))
+	 (pstamp (pcase (org-publish-cache-get key)
+		   ;; Old format, convert it back to a time value.
+		   ((and stamp (pred wholenump)) (seconds-to-time stamp))
+		   (stamp stamp)))
 	 (org-inhibit-startup t)
 	 included-files-ctime)
     (when (equal (file-name-extension filename) "org")
@@ -1314,8 +1317,9 @@ the file including them will be republished as well."
 	  (unless visiting (kill-buffer buf)))))
     (or (null pstamp)
 	(let ((ctime (org-publish-cache-ctime-of-src filename)))
-	  (or (< pstamp ctime)
-	      (cl-some (lambda (ct) (< ctime ct)) included-files-ctime))))))
+	  (or (time-less-p pstamp ctime)
+	      (cl-some (lambda (ct) (time-less-p ctime ct))
+		       included-files-ctime))))))
 
 (defun org-publish-cache-set-file-property
   (filename property value &optional project-name)
@@ -1365,8 +1369,8 @@ does not exist."
   (let ((attr (file-attributes
 	       (expand-file-name (or (file-symlink-p file) file)
 				 (file-name-directory file)))))
-    (if (not attr) (error "No such file: \"%s\"" file)
-      (floor (float-time (file-attribute-modification-time attr))))))
+    (if (not attr) (error "No such file: %S" file)
+      (file-attribute-modification-time attr))))
 
 
 (provide 'ox-publish)