From: Michael Stapelberg Date: Fri, 7 Aug 2009 13:48:13 +0000 (+0200) Subject: Bugfix: Don’t crash when the font is specified after the workspace names in configfil... X-Git-Tag: 3.c~20 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6192975a041eaacb267ddabc0c2dcb4f33e3b58b;p=i3%2Fi3 Bugfix: Don’t crash when the font is specified after the workspace names in configfile (Thanks xiaodong) --- diff --git a/src/config.c b/src/config.c index de859564..86f0381e 100644 --- a/src/config.c +++ b/src/config.c @@ -485,8 +485,15 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath, /* Set an empty name for every workspace which got no name */ for (int i = 0; i < 10; i++) { - if (workspaces[i].name != NULL) + Workspace *ws = &(workspaces[i]); + if (ws->name != NULL) { + /* If the font was not specified when the workspace name + * was loaded, we need to predict the text width now */ + if (ws->text_width == 0) + ws->text_width = predict_text_width(global_conn, + config.font, ws->name, ws->name_len); continue; + } workspace_set_name(&(workspaces[i]), NULL); } diff --git a/src/workspace.c b/src/workspace.c index 1e2aaf4f..e04ea2a9 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -41,7 +41,9 @@ void workspace_set_name(Workspace *ws, const char *name) { FREE(ws->name); ws->name = convert_utf8_to_ucs2(label, &(ws->name_len)); - ws->text_width = predict_text_width(global_conn, config.font, ws->name, ws->name_len); + if (config.font != NULL) + ws->text_width = predict_text_width(global_conn, config.font, ws->name, ws->name_len); + else ws->text_width = 0; free(label); }