mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
view: fix NULL string_prop crash
...when app_id is NULL. Make sure view_get_string_prop() never returns NULL because it is so easy to misuse. Same for the respective xwayland/xdg impl methods in case anyone decides to (incorrectly) call them directly in future. Fixes: #2453
This commit is contained in:
parent
bad788ccdd
commit
023427b4f4
3 changed files with 8 additions and 6 deletions
|
|
@ -2335,13 +2335,15 @@ view_has_strut_partial(struct view *view)
|
||||||
view->impl->has_strut_partial(view);
|
view->impl->has_strut_partial(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note: It is safe to assume that this function never returns NULL */
|
||||||
const char *
|
const char *
|
||||||
view_get_string_prop(struct view *view, const char *prop)
|
view_get_string_prop(struct view *view, const char *prop)
|
||||||
{
|
{
|
||||||
assert(view);
|
assert(view);
|
||||||
assert(prop);
|
assert(prop);
|
||||||
if (view->impl->get_string_prop) {
|
if (view->impl->get_string_prop) {
|
||||||
return view->impl->get_string_prop(view, prop);
|
const char *ret = view->impl->get_string_prop(view, prop);
|
||||||
|
return ret ? ret : "";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -660,10 +660,10 @@ xdg_toplevel_view_get_string_prop(struct view *view, const char *prop)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(prop, "title")) {
|
if (!strcmp(prop, "title")) {
|
||||||
return xdg_toplevel->title;
|
return xdg_toplevel->title ? xdg_toplevel->title : "";
|
||||||
}
|
}
|
||||||
if (!strcmp(prop, "app_id")) {
|
if (!strcmp(prop, "app_id")) {
|
||||||
return xdg_toplevel->app_id;
|
return xdg_toplevel->app_id ? xdg_toplevel->app_id : "";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -485,10 +485,10 @@ xwayland_view_get_string_prop(struct view *view, const char *prop)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(prop, "title")) {
|
if (!strcmp(prop, "title")) {
|
||||||
return xwayland_surface->title;
|
return xwayland_surface->title ? xwayland_surface->title : "";
|
||||||
}
|
}
|
||||||
if (!strcmp(prop, "class")) {
|
if (!strcmp(prop, "class")) {
|
||||||
return xwayland_surface->class;
|
return xwayland_surface->class ? xwayland_surface->class : "";
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Use the WM_CLASS 'instance' (1st string) for the app_id. Per
|
* Use the WM_CLASS 'instance' (1st string) for the app_id. Per
|
||||||
|
|
@ -500,7 +500,7 @@ xwayland_view_get_string_prop(struct view *view, const char *prop)
|
||||||
* here since we use the app_id for icon lookups.
|
* here since we use the app_id for icon lookups.
|
||||||
*/
|
*/
|
||||||
if (!strcmp(prop, "app_id")) {
|
if (!strcmp(prop, "app_id")) {
|
||||||
return xwayland_surface->instance;
|
return xwayland_surface->instance ? xwayland_surface->instance : "";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue