Manpage of XkbGetMap

Morten Bøgeskov mb at
Sun Mar 2 01:37:24 PST 2014


I ran into a little issue with the man page of XkbGetMap..
The only reference to free in the page is:
"To free the returned data, use XkbFreeClientMap."

however this program:

#include <X11/Xlib.h>
#include <X11/XKBlib.h>

int main(int argc, char * argv[]) {
  Display *dpy = XOpenDisplay(NULL);
  XkbDescPtr keyboard_map = XkbGetMap(dpy, XkbAllClientInfoMask,
  //XkbFreeKeyboard(keyboard_map, 0, True);
  XkbFreeClientMap(keyboard_map, 0, True);

compiled with:
gcc -o x11 x11.c `pkg-config --libs --cflags x11`

run with:
valgrind --leak-check=full ./x11

==22885== 72 bytes in 1 blocks are definitely lost in loss record 1 of 1
==22885==    at 0x4C29590: calloc (vg_replace_malloc.c:618)
==22885==    by 0x4EC19C0: XkbGetMap
(in /usr/lib/x86_64-linux-gnu/
==22885==    by 0x40077C: main (in /home/bogeskov/x11)

However if you use XkbFreeKeyboard instead you get:
==22901== HEAP SUMMARY:
==22901==     in use at exit: 0 bytes in 0 blocks
==22901==   total heap usage: 96 allocs, 96 frees, 70,435 bytes

Could someone please bring the man page / reality into sync ;-)


Morten Bøgeskov

More information about the xorg mailing list