Subject: bug#20434: 24.3.91.1; set-display-table-slot produces error only when byte-compiled

From: Stefan Guath <[email-masked]>
Date: Sun, 26 Apr 2015 19:29:34 +0200

VERSION:
GNU Emacs 24.5.1 (x86_64-apple-darwin13.4.0, NS apple-appkit-1265.21) of 2015-04-10 on builder10-9.porkrind.org

TO REPRODUCE BUG:
1) Create file "bug.el" with the following single expression:
    (set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?\s 'vertical-border))
2) Byte compile this "bug.el" file (i.e. create the file "bug.elc").
3) Start Emacs with emacs -Q
4) M-x load-file bug.elc
5) This will produce the error "Wrong type argument: char-table-p, nil". The uncompiled "bug.el" version works fine though.

DETAILS
The purpose of the expression is to set the space character as the vertical window separator, in order to achieve a cleaner visual design.

STRANGE WORK-AROUND
A strange work-around is to repeat the third arg to set-display-table-slot as a dummy expression before the real expression, i.e. if the complete "bug.el" looks like:

    (make-glyph-code ?\s 'vertical-border) ;Dummy repeat that somehow prevents bug...
    (set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?\s 'vertical-border)) ;Now this suddenly works!

Then it works in the byte-compiled version.