From 38572bd5f740e10dd146b414b9ba145a2d974f98 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Mon, 23 Mar 2026 09:55:47 +0800 Subject: [PATCH] =?UTF-8?q?utils:=20=E6=B7=BB=E5=8A=A0=20p=5Fstrdup=5Fnull?= =?UTF-8?q?able=20=E8=BE=85=E5=8A=A9=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/layout.c | 2 +- src/core/state.c | 10 +++++----- src/utils.h | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/layout.c b/src/core/layout.c index 9245ce6..8589b63 100644 --- a/src/core/layout.c +++ b/src/core/layout.c @@ -93,7 +93,7 @@ wm_layout_id_t wm_layout_register(wm_layout_registry_t *registry, r->id = id; r->name = p_strdup(name); r->symbol = p_strdup(symbol); - r->description = description ? p_strdup(description) : nullptr; + r->description = p_strdup_nullable(description); r->fn = fn; registry->slot_count++; diff --git a/src/core/state.c b/src/core/state.c index b23ce7e..a10683c 100644 --- a/src/core/state.c +++ b/src/core/state.c @@ -19,7 +19,7 @@ void wm_state_init(wm_state_t *state, const wm_output_info_t *outputs, output->id = (wm_output_id_t)i; output->current_workspace_id = WM_WORKSPACE_ID_INVALID; - output->name = p_strdup(output_info->name); + output->name = p_strdup_nullable(output_info->name); output->geometry = output_info->geometry; output->workarea = output_info->geometry; } @@ -451,7 +451,7 @@ bool wm_state_window_set_title(wm_state_t *state, wm_window_id_t window_id, if (!window) return false; p_delete(&window->title); - if (title) window->title = p_strdup(title); + window->title = p_strdup_nullable(title); return true; } @@ -462,7 +462,7 @@ bool wm_state_window_set_app_id(wm_state_t *state, wm_window_id_t window_id, if (!window) return false; p_delete(&window->app_id); - if (app_id) window->app_id = p_strdup(app_id); + window->app_id = p_strdup_nullable(app_id); return true; } @@ -472,7 +472,7 @@ bool wm_state_window_set_class(wm_state_t *state, wm_window_id_t window_id, if (!window) return false; p_delete(&window->class_name); - if (class_name) window->class_name = p_strdup(class_name); + window->class_name = p_strdup_nullable(class_name); return true; } @@ -482,7 +482,7 @@ bool wm_state_window_set_instance(wm_state_t *state, wm_window_id_t window_id, if (!window) return false; p_delete(&window->instance_name); - if (instance_name) window->instance_name = p_strdup(instance_name); + window->instance_name = p_strdup_nullable(instance_name); return true; } diff --git a/src/utils.h b/src/utils.h index 3b46eeb..8f56875 100644 --- a/src/utils.h +++ b/src/utils.h @@ -36,6 +36,11 @@ static inline char *p_strdup(const char *text) { return r; } +static inline char *p_strdup_nullable(const char *text) { + if (!text) return nullptr; + return p_strdup(text); +} + static inline void *__attribute__((malloc)) xmalloc(ssize_t size) { void *ptr;