Copy locale modifiers when creating XimInstCallback [v2]

Locale modifiers may be freed whenever XSetLocaleModifiers gets
called, even if the locale hasn't changed. This means that we cannot
save a pointer to those modifiers in the XimInstCallback record and
must, instead, make a copy of them instead.

This fixes a problem uncovered when running wish under libasan as
follows (on current Debian unstable):

	$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/ wish

Reported-by: Vittorio Zecca <>
Signed-off-by: Keith Packard <>

	Remove incorrect 'else' token found by @alanc
4 jobs for use-after-free-locale-fix in 8 minutes and 40 seconds (queued for 2 seconds)