xuchunyang/youdao-dictionary.el

byte-code: Invalid date: 10-Mar-2046 09:53:43.00 GMT

Closed this issue · 3 comments

首次查词没问题, 后续查词出现提示:

Contacting host: fanyi.youdao.com:80
byte-code: Invalid date: 10-Mar-2046 09:53:43.00 GMT [4 times]

无法查询了

好像是老版本 Emacs 的一个 bug,与 #1 是相同的问题,在 #1 (comment) 中提到了一个解决办法。

最近又遇到这个问题, 查了下原来是 y2038 problem

#1 提到的方法如果cookies大于2038年会返回nil, 我自己重新写了下 url-cookie-expired-p 使大于2038年的cookies返回t

如下:

(require-package 'youdao-dictionary)
;; FIX y2038 problem on 32bit PC
;; after load url-cookie.el, replace this func to avoid y2038 problem
(eval-after-load 'url-cookie
  '(defun url-cookie-expired-p (cookie)
     "Return non-nil if COOKIE is expired."
     (let ((exp (url-cookie-expires cookie)) year)
       (and (> (length exp) 0)
            (string-match "\\([1-9][0-9]\\{3\\}\\)" exp)
            (setq year (match-string 1 exp))
            (if (and year (setq year (string-to-number year)) (>= year 2038)) t
              (> (float-time) (float-time (date-to-time exp))))
            ))))

好像之前遇到类似的问题 [1],都是在 32 位系统下才产生的。

  1. xuchunyang/eshell-z#2