emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fwd: parse-time-string error with non ASCII timestamp


From: Levin Du
Subject: Fwd: parse-time-string error with non ASCII timestamp
Date: Tue, 17 Apr 2007 18:10:03 +0800

Hi list,

   I'was dicovering this when inserting timestamp in org-mode.

   My timestamp includes Chinese number, when the following executes:

    (parse-time-string "<2007-04-02 δΈ€>")  ; the 12nd char is the
Chinese number.

An error will occur:

Debugger entered--Lisp error: (args-out-of-range [nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil 1 nil -1 nil nil 48 48 48 48 48 48 48 48 48 48 100 nil
nil nil nil nil nil 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
65 65 65 65 65 65 65 65 65 nil nil nil nil nil nil 97 97 97 97 97 97
97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil] 19968)
  aref([nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil 1 nil -1 nil nil 48
48 ...] 19968)
  parse-time-string-chars(19968)
  (setq c (parse-time-string-chars (aref string index)))
  (not (setq c (parse-time-string-chars ...)))
  (and (< index end) (not (setq c ...)))
  (while (and (< index end) (not ...)) (incf index))
  (while (< index end) (while (and ... ...) (incf index)) (setq start
index all-digits (eq c 48)) (while (and ... ...) (setq all-
digits ...)) (if (<= index end) (push ... list)))
  (let ((start nil) (end ...) (all-digits nil) (list nil) (index 0) (c
nil)) (while (< index end) (while ... ...) (setq start index all-
digits ...) (while ... ...) (if ... ...)) (nreverse list))
  parse-time-tokenize("<2007-04-02 \x4e00>")
  (let ((time ...) (temp ...)) (while temp (let ... ...)) time)
  parse-time-string("<2007-04-02 \x4e00>")
  eval((parse-time-string "<2007-04-02 \x4e00>"))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)


This is a patch I wrote to solve this problem:
*** /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el.orig
2007-04-02 10:01:27.000000000 +0800
--- /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el         2007-04-02
15:35:07.000000000 +0800
***************
*** 66,72 ****
    (aref parse-time-digits char))

  (defsubst parse-time-string-chars (char)
!   (aref parse-time-syntax char))

  (put 'parse-error 'error-conditions '(parse-error error))
  (put 'parse-error 'error-message "Parsing error")
--- 66,73 ----
    (aref parse-time-digits char))

  (defsubst parse-time-string-chars (char)
!   (and (< char (length parse-time-syntax))
!        (aref parse-time-syntax char)))

  (put 'parse-error 'error-conditions '(parse-error error))
  (put 'parse-error 'error-message "Parsing error")


Hope this is useful and can be merged into emacs.

Thanks!

Levin


reply via email to

[Prev in Thread] Current Thread [Next in Thread]