From ea6068a02d54c7f9995c94d89c53078bb0097906 Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Sat, 30 Mar 2019 13:20:32 +0200 Subject: [PATCH 1/3] Replace scalloc + strncpy with sstrndup --- i3-msg/main.c | 13 +++++-------- src/ipc.c | 5 ++--- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/i3-msg/main.c b/i3-msg/main.c index 0ada5f64..3a897416 100644 --- a/i3-msg/main.c +++ b/i3-msg/main.c @@ -77,8 +77,8 @@ static int reply_boolean_cb(void *params, int val) { } static int reply_string_cb(void *params, const unsigned char *val, size_t len) { - char *str = scalloc(len + 1, 1); - strncpy(str, (const char *)val, len); + char *str = sstrndup((const char *)val, len); + if (strcmp(last_key, "error") == 0) last_reply.error = str; else if (strcmp(last_key, "input") == 0) @@ -108,8 +108,7 @@ static int reply_end_map_cb(void *params) { static int reply_map_key_cb(void *params, const unsigned char *keyVal, size_t keyLen) { free(last_key); - last_key = scalloc(keyLen + 1, 1); - strncpy(last_key, (const char *)keyVal, keyLen); + last_key = sstrndup((const char *)keyVal, keyLen); return 1; } @@ -128,8 +127,7 @@ static yajl_callbacks reply_callbacks = { static char *config_last_key = NULL; static int config_string_cb(void *params, const unsigned char *val, size_t len) { - char *str = scalloc(len + 1, 1); - strncpy(str, (const char *)val, len); + char *str = sstrndup((const char *)val, len); if (strcmp(config_last_key, "config") == 0) { fprintf(stdout, "%s", str); } @@ -146,8 +144,7 @@ static int config_end_map_cb(void *params) { } static int config_map_key_cb(void *params, const unsigned char *keyVal, size_t keyLen) { - config_last_key = scalloc(keyLen + 1, 1); - strncpy(config_last_key, (const char *)keyVal, keyLen); + config_last_key = sstrndup((const char *)keyVal, keyLen); return 1; } diff --git a/src/ipc.c b/src/ipc.c index 2432d7a5..e548b5a6 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -215,12 +215,11 @@ void ipc_shutdown(shutdown_reason_t reason) { IPC_HANDLER(run_command) { /* To get a properly terminated buffer, we copy * message_size bytes out of the buffer */ - char *command = scalloc(message_size + 1, 1); - strncpy(command, (const char *)message, message_size); + char *command = sstrndup((const char *)message, message_size); LOG("IPC: received: *%s*\n", command); yajl_gen gen = yajl_gen_alloc(NULL); - CommandResult *result = parse_command((const char *)command, gen); + CommandResult *result = parse_command(command, gen); free(command); if (result->needs_tree_render) From 8b88f00117c6c251efd720aedb97afd55fdf76f6 Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Sat, 30 Mar 2019 13:31:59 +0200 Subject: [PATCH 2/3] window.c: Reduce code in window_update_* functions --- src/window.c | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/window.c b/src/window.c index 799488c6..8c3ae850 100644 --- a/src/window.c +++ b/src/window.c @@ -51,14 +51,10 @@ void window_update_class(i3Window *win, xcb_get_property_reply_t *prop, bool bef LOG("WM_CLASS changed to %s (instance), %s (class)\n", win->class_instance, win->class_class); - if (before_mgmt) { - free(prop); - return; - } - - run_assignments(win); - free(prop); + if (!before_mgmt) { + run_assignments(win); + } } /* @@ -92,14 +88,10 @@ void window_update_name(i3Window *win, xcb_get_property_reply_t *prop, bool befo win->uses_net_wm_name = true; - if (before_mgmt) { - free(prop); - return; - } - - run_assignments(win); - free(prop); + if (!before_mgmt) { + run_assignments(win); + } } /* @@ -141,14 +133,10 @@ void window_update_name_legacy(i3Window *win, xcb_get_property_reply_t *prop, bo win->name_x_changed = true; - if (before_mgmt) { - free(prop); - return; - } - - run_assignments(win); - free(prop); + if (!before_mgmt) { + run_assignments(win); + } } /* @@ -244,14 +232,10 @@ void window_update_role(i3Window *win, xcb_get_property_reply_t *prop, bool befo win->role = new_role; LOG("WM_WINDOW_ROLE changed to \"%s\"\n", win->role); - if (before_mgmt) { - free(prop); - return; - } - - run_assignments(win); - free(prop); + if (!before_mgmt) { + run_assignments(win); + } } /* From cc9b227978d06777034f95643aa643c0dee079e4 Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Sat, 30 Mar 2019 13:43:36 +0200 Subject: [PATCH 3/3] Make small DLOG improvements - manage_window: log the window in the start of the function so that the reader knows what the rest of the messages refer to, even if the function exits prematurely. - con_is_floating: Message is spammy --- src/con.c | 1 - src/manage.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/con.c b/src/con.c index a88909e1..4b640eb8 100644 --- a/src/con.c +++ b/src/con.c @@ -539,7 +539,6 @@ bool con_is_internal(Con *con) { */ bool con_is_floating(Con *con) { assert(con != NULL); - DLOG("checking if con %p is floating\n", con); return (con->floating >= FLOATING_AUTO_ON); } diff --git a/src/manage.c b/src/manage.c index c1468123..80faa167 100644 --- a/src/manage.c +++ b/src/manage.c @@ -80,6 +80,8 @@ void restore_geometry(void) { */ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cookie, bool needs_to_be_mapped) { + DLOG("window 0x%08x\n", window); + xcb_drawable_t d = {window}; xcb_get_geometry_cookie_t geomc; xcb_get_geometry_reply_t *geom; @@ -163,8 +165,6 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki wm_user_time_cookie = GET_PROPERTY(A__NET_WM_USER_TIME, UINT32_MAX); wm_desktop_cookie = GET_PROPERTY(A__NET_WM_DESKTOP, UINT32_MAX); - DLOG("Managing window 0x%08x\n", window); - i3Window *cwindow = scalloc(1, sizeof(i3Window)); cwindow->id = window; cwindow->depth = get_visual_depth(attr->visual);