Fix double free in the case of windows with a _NET_WM_NAME property,
reported by frantisek holop, patch by Tim van der Molen. Thanks to both.
This commit is contained in:
parent
5f9395d931
commit
546e991d51
@ -786,9 +786,9 @@ Display_Window_Id (struct wininfo *w, Bool newline_wanted)
|
|||||||
{
|
{
|
||||||
#ifdef USE_XCB_ICCCM
|
#ifdef USE_XCB_ICCCM
|
||||||
xcb_get_text_property_reply_t wmn_reply;
|
xcb_get_text_property_reply_t wmn_reply;
|
||||||
|
uint8_t got_reply = False;
|
||||||
#endif
|
#endif
|
||||||
xcb_get_property_reply_t *prop;
|
xcb_get_property_reply_t *prop;
|
||||||
uint8_t got_reply = False;
|
|
||||||
const char *wm_name = NULL;
|
const char *wm_name = NULL;
|
||||||
unsigned int wm_name_len = 0;
|
unsigned int wm_name_len = 0;
|
||||||
xcb_atom_t wm_name_encoding = XCB_NONE;
|
xcb_atom_t wm_name_encoding = XCB_NONE;
|
||||||
@ -807,10 +807,7 @@ Display_Window_Id (struct wininfo *w, Bool newline_wanted)
|
|||||||
wm_name = xcb_get_property_value (prop);
|
wm_name = xcb_get_property_value (prop);
|
||||||
wm_name_len = xcb_get_property_value_length (prop);
|
wm_name_len = xcb_get_property_value_length (prop);
|
||||||
wm_name_encoding = prop->type;
|
wm_name_encoding = prop->type;
|
||||||
got_reply = True;
|
} else { /* No _NET_WM_NAME, check WM_NAME */
|
||||||
}
|
|
||||||
|
|
||||||
if (!got_reply) { /* No _NET_WM_NAME, check WM_NAME */
|
|
||||||
#ifdef USE_XCB_ICCCM
|
#ifdef USE_XCB_ICCCM
|
||||||
got_reply = xcb_get_wm_name_reply (dpy, w->wm_name_cookie,
|
got_reply = xcb_get_wm_name_reply (dpy, w->wm_name_cookie,
|
||||||
&wmn_reply, NULL);
|
&wmn_reply, NULL);
|
||||||
@ -825,11 +822,10 @@ Display_Window_Id (struct wininfo *w, Bool newline_wanted)
|
|||||||
wm_name = xcb_get_property_value (prop);
|
wm_name = xcb_get_property_value (prop);
|
||||||
wm_name_len = xcb_get_property_value_length (prop);
|
wm_name_len = xcb_get_property_value_length (prop);
|
||||||
wm_name_encoding = prop->type;
|
wm_name_encoding = prop->type;
|
||||||
got_reply = True;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (!got_reply || wm_name_len == 0) {
|
if (wm_name_len == 0) {
|
||||||
printf (" (has no name)");
|
printf (" (has no name)");
|
||||||
} else {
|
} else {
|
||||||
if (wm_name_encoding == XCB_ATOM_STRING) {
|
if (wm_name_encoding == XCB_ATOM_STRING) {
|
||||||
|
Loading…
Reference in New Issue
Block a user