if (!c || xcb_connection_has_error(c))
return NULL;
您传入的是一个NULL指针或一个已经断开的XCB连接。
syms = malloc (sizeof (xcb_key_symbols_t));
if (!syms)
return NULL;
内存分配失败。 如果要我猜的话,我会说你的XCB连接断开了/处于错误状态。既然你说这是关于根窗口的大小,你可能在前面做了一个太大的PutImage请求? 一个随机的printf-调试的想法是把printf("I am here and state is %d\n", xcb_connection_has_error(c))放在一些随机的地方,并使用它来找出连接中断/进入错误状态的确切位置。
1条答案
按热度按时间falq053o1#
为什么会发生这种情况,我该如何解决?
让我们看看源代码!Debian代码库找到https://sources.debian.org/src/xcb-util-keysyms/0.4.0-1/keysyms/keysyms.c/?hl=74#L74
这个函数有三种返回
NULL
的情况。您传入的是一个
NULL
指针或一个已经断开的XCB连接。内存分配失败。
如果要我猜的话,我会说你的XCB连接断开了/处于错误状态。既然你说这是关于根窗口的大小,你可能在前面做了一个太大的
PutImage
请求?一个随机的
printf
-调试的想法是把printf("I am here and state is %d\n", xcb_connection_has_error(c))
放在一些随机的地方,并使用它来找出连接中断/进入错误状态的确切位置。