Subject: Behaviour of `char-syntax' changes when byte-compiled

From: Toby Cubitt <[email-masked]>
Date: Sun, 2 May 2010 12:15:17 +0100

Define the following test function:

  (defun test ()
    (let ((char 33554464))
      (message "char: %s" char)
      (message "syntax: %s" (char-syntax char)))
    nil)

(Note that 33554464 is the value of `last-input-event' when a command is
invoked by the key sequence "S-<SPC>".)

When the test function is evalled and then run with "M-: (test)", it
outputs the following in the *Messages* buffer:

char: 33554464
syntax: 32
nil

When the test function is byte-compiled, loaded, and run as before with
"M-: (test)", it throws an error and produces the following backtrace:

Debugger entered--Lisp error: (wrong-type-argument characterp 33554464)
  test()
  eval((test))
  eval-expression((test) nil)
  call-interactively(eval-expression nil nil)

This is with a recent VCS Emacs checkout. Emacs version and settings are
included below.

Toby

In GNU Emacs 23.1.96.1 (i686-pc-linux-gnu, GTK+ Version 2.18.6)
 of 2010-04-23 on c3po
Windowing system distributor `The X.Org Foundation', version 11.0.10706000
configured using `configure  '--prefix=/usr' '--host=i686-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--program-suffix=-emacs-23-vcs' '--infodir=/usr/share/info/emacs-23-vcs' '--with-sound' '--with-x' '--without-gconf' '--with-toolkit-scroll-bars' '--without-gif' '--without-jpeg' '--with-png' '--with-rsvg' '--without-tiff' '--with-xpm' '--with-xft' '--without-libotf' '--without-m17n-flt' '--with-x-toolkit=gtk' '--without-hesiod' '--without-kerberos' '--without-kerberos5' '--with-gpm' '--with-dbus' '--build=i686-pc-linux-gnu' 'build_alias=i686-pc-linux-gnu' 'host_alias=i686-pc-linux-gnu' 'CFLAGS=-march=prescott -O2 -pipe' 'LDFLAGS=-Wl,-O1''

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

Features:
(conf-mode newcomment shadow sort mail-extr message sendmail ecomplete
rfc822 mml mml-sec password-cache mm-decode mm-bodies mm-encode mailcap
mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader
gnus-util netrc time-date mm-util mail-prsvr gmm-utils wid-edit
mailheader canlock sha1 hex-util hashcash mail-utils emacsbug iso-transl
info pp cl-specs edebug thingatpt cc-mode cc-fonts cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs easy-mmode compile comint
ring multi-isearch vc-git find-func help-mode view debug server
which-func imenu paren advice advice-preload post help-fns derived cl
cl-19 css-mode-simple edmacro kmacro regexp-opt undo-tree
log-modification-mode show-point-mode predictive-html auto-overlay-flat
predictive-texinfo predictive-latex predictive-auto-overlay-auto-dict
auto-overlay-nested auto-overlay-self auto-overlay-line
auto-overlay-word predictive timerfunctions auto-overlays
auto-overlay-common dict-tree trie cedet-edebug tNFA queue heap avl-tree
semantic/util-modes easymenu semantic/util semantic semantic/tag
semantic/lex semantic/fw eieio byte-opt bytecomp byte-compile mode-local
cedet completion-ui-sources completion-ui-menu completion-ui-tooltip
completion-ui-echo completion-ui-hotkeys completion-ui-dynamic
completion-ui-popup-frame completion-ui flyspell ispell avoid
site-gentoo preview-latex tex-site auto-loads tooltip ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mldrag mouse jit-lock font-lock syntax facemenu
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces
cus-face files text-properties overlay md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote
make-network-process dbusbind font-render-setting gtk x-toolkit x
multi-tty emacs)

-- 
Dr T. S. Cubitt
Quantum Information Theory group
Department of Mathematics
University of Bristol
United Kingdom

email: [email-masked]
web: www.dr-qubit.org