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

From: Eli Zaretskii <[email-masked]>
Date: Sun, 26 Apr 2015 22:12:59 +0300

> 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".

That's expected: the default value of standard-display-table is nil.
You should use something like this instead:

  (or standard-display-table
      (setq standard-display-table (make-display-table)))

> The uncompiled "bug.el" version works fine though.

Probably because you load it into a session that already has
standard-display-table initialized to a non-nil value.