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 [email protected] 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
_______________________________________________
emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to