emacs-pretest-bug
[Top][All Lists]
Advanced

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

Maybe bug with multibyte string and aset


From: pluskid
Subject: Maybe bug with multibyte string and aset
Date: Wed, 11 Oct 2006 12:30:57 +0800 (CST)

Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the address@hidden mailing list.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

Recent days, my Mew(Message in Emacs World) keeps on crashing with
"Args out of range" and I have had many mails disappeared. Today I
traced into and find it's the function `aset' that throw this error.

It seems to be a bug dealing with multibyte characters, i.e. Chinese
characters. Here I'll show how to reproduce it. In case you don't have
font to display Chinese character, I will use `!!' to denote the
Chinese character `我' , C-u C-x = on this character will produce the
following properties, maybe of some help.

        character: 我 (25105, #o61021, #x6211)
preferred charset: chinese-gb2312 (GB2312 Chinese simplified: ISO-IR-58)
       code point: 0x4E52
           syntax: w    which means: word
         category: C:Chinese (Han) characters of 2-byte character sets 
c:Chinese h:Korean j:Japanese
                   |:While filling, we can break a line at this character.
      buffer code: #xE6 #x88 #x91
        file code: ESC #x24 #x28 #x41 #x4E #x52 (encoded by coding system 
ctext-unix)
          display: by this font (glyph code)
     -misc-simsun-medium-r-normal--14-101-100-100-p-140-gb2312.1980-0 (#x4E52)

Then, try the following code

(let ((foo "foobar"))
  (aset foo 0 ?\!!)) ; note the `!!' means the Chinese character I
                     ; mentioned above

evaluate this expression , I get an error:

Debugger entered--Lisp error: (args-out-of-range "foobar" 25105)
  aset("foobar" 0 25105)
  (let ((foo "foobar")) (aset foo 0 25105))
  eval((let ((foo "foobar")) (aset foo 0 25105)))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)

I've tried this on Emacs 22 cvs and it works. I think any multibyte
character will cause this problem(I've tested many of them, but I
can't test all). Still, if the string foo initially contains some
multibyte characters, the error won't occur. The following code:

(let ((foo "foo!!ar"))
  (aset foo 0 ?\!!)
  foo)

works perfectly. And if I explicitly decode the string to a Chinese
coding system, it also works correctly:

(let ((foo (decode-coding-string "foobar" 'chinese-gbk)))
  (aset foo 0 ?\!!)
  foo)

Thanks!

If emacs crashed, and you have the emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/local/share/emacs/23.0.0/etc/DEBUG for instructions.


In GNU Emacs 23.0.0.1 (i686-pc-linux-gnu, GTK+ Version 2.8.20)
 of 2006-10-01 on kid
X server distributor `The X.Org Foundation', version 11.0.70101000
configured using `configure  '--with-gtk''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: zh_CN.UTF-8
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  shell-dirtrack-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
C-h f r e p o <tab> r t - e m <tab> <return> M-x r 
e p o r t - e m a c s - b u g <return>

Recent messages:
Loading /home/kid/emacs/init.d/60muse-bbs-smth.el (source)...done
Loading /home/kid/emacs/init.d/60muse-bbs.el (source)...done
Loading /home/kid/emacs/init.d/60muse-latex2png.el (source)...done
Loading /home/kid/emacs/init.d/60muse-srctag.el (source)...done
Loading /home/kid/emacs/init.d/60muse-ubb.el (source)...done
Loading /home/kid/.emms-cache...done
For information about the GNU Project and its goals, type C-h C-p.
Making completion list...
Type C-x 1 to remove help window.  
Loading emacsbug...done

reply via email to

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