From d4731be3fa7d519f298e07e21584ed1827de8d2a Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Sun, 16 Feb 2025 21:05:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=87=8D=E8=BD=BD=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- maomao.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/maomao.c b/maomao.c index ec3cca57..3d72590e 100644 --- a/maomao.c +++ b/maomao.c @@ -123,11 +123,11 @@ enum { #endif enum { UP, DOWN, LEFT, RIGHT, UNDIR }; /* movewin */ -typedef union { +typedef struct { int i; - unsigned int ui; float f; - const void *v; + char *v; + unsigned int ui; } Arg; typedef struct { @@ -4138,7 +4138,7 @@ void // 17 setlayout(const Arg *arg) { if (!selmon) return; - if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) + if (!arg || !arg->v || strcmp(arg->v, selmon->lt[selmon->sellt]->name)) selmon->sellt ^= 1; if (arg && arg->v) { selmon->lt[selmon->sellt] = (Layout *)arg->v; @@ -4354,17 +4354,27 @@ void free_config(void) { free(config.monitor_rules); for ( i = 0; i < config.key_bindings_count; i++) { - if (config.key_bindings[i].arg.v) free((void *)config.key_bindings[i].arg.v); + if (config.key_bindings[i].arg.v) { + logtofile(config.key_bindings[i].arg.v); + free((void *)config.key_bindings[i].arg.v); + config.key_bindings[i].arg.v = NULL; // 避免重复释放 + } } free(config.key_bindings); for ( i = 0; i < config.mouse_bindings_count; i++) { - if (config.mouse_bindings[i].arg.v) free((void *)config.mouse_bindings[i].arg.v); + if (config.mouse_bindings[i].arg.v) { + free((void *)config.mouse_bindings[i].arg.v); + config.mouse_bindings[i].arg.v = NULL; // 避免重复释放 + } } free(config.mouse_bindings); for (i = 0; i < config.axis_bindings_count; i++) { - if (config.axis_bindings[i].arg.v) free((void *)config.axis_bindings[i].arg.v); + if (config.axis_bindings[i].arg.v) { + free((void *)config.axis_bindings[i].arg.v); + config.axis_bindings[i].arg.v = NULL; // 避免重复释放 + } } free(config.axis_bindings);