Fix map->num_types check in XkbAddKeyType()

Check is intended to ensure we allocate at least XkbNumRequiredTypes
in map, but was accidentally marked with a ! causing the wrong check.

Reported-by: Harms <wharms@bfs,de>
Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Fix validation of ctrls parameter to XkbGetPerClientControls()

Nothing in the XKB spec states that the memory pointed to by ctrls has to
be initialized to any given value when passed to the function, only that
it is set by the function to the values returned by the X server:
http://www.x.org/releases/X11R7.7/doc/libX11/XKB/xkblib.html#The_Miscellaneous_Per_client_Controls

The check for the incoming value seems to be copied from
XkbSetPerClientControls without explanation.

Instead change it to checking if ctrls is non-NULL, since there's no
point asking the X server to return a value the caller won't even see.

Found while investigating report from cppcheck-1.65:
[src/xkb/XKB.c:699] -> [src/xkb/XKB.c:719]: (warning) Possible null pointer
 dereference: ctrls - otherwise it is redundant to check it against null.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Use C99 named initializers to fill in events passed to XSendEvent

Forces compiler to zero-fill unset fields in the struct (fixing bug 81236)
and allows optimizer to order field initialization to best fit cache layout
or other considerations.

Before & after output of gcc -S on AMD64 shows insertion of "rep stosq"
instructions to rapidly zero-fill structs.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
specs/libX11: Correct value of IconicState to match Xutil.h

Xutil.h has always had a value of 3 for IconicState, since 2 was
previously used for the long-obsolete ZoomState, so make the spec
match what programs have used for decades.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>
specs/libX11: disengender a user reference

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>