Bugfix: Correctly handle workspace names which do not start with a zero
This commit is contained in:
parent
b4809e9ba7
commit
8928b5f55d
|
@ -447,10 +447,12 @@ void init_ws_for_output(Output *output, Con *content) {
|
|||
if (!exists) {
|
||||
/* Set ->num to the number of the workspace, if the name actually
|
||||
* is a number or starts with a number */
|
||||
long parsed_num = strtol(ws->name, NULL, 10);
|
||||
char *endptr = NULL;
|
||||
long parsed_num = strtol(ws->name, &endptr, 10);
|
||||
if (parsed_num == LONG_MIN ||
|
||||
parsed_num == LONG_MAX ||
|
||||
parsed_num <= 0)
|
||||
parsed_num < 0 ||
|
||||
endptr == ws->name)
|
||||
ws->num = -1;
|
||||
else ws->num = parsed_num;
|
||||
LOG("Used number %d for workspace with name %s\n", ws->num, ws->name);
|
||||
|
|
|
@ -49,11 +49,12 @@ Con *workspace_get(const char *num, bool *created) {
|
|||
workspace->name = sstrdup(num);
|
||||
/* We set ->num to the number if this workspace’s name consists only of
|
||||
* a positive number. Otherwise it’s a named ws and num will be -1. */
|
||||
|
||||
long parsed_num = strtol(num, NULL, 10);
|
||||
char *endptr = NULL;
|
||||
long parsed_num = strtol(num, &endptr, 10);
|
||||
if (parsed_num == LONG_MIN ||
|
||||
parsed_num == LONG_MAX ||
|
||||
parsed_num < 0)
|
||||
parsed_num < 0 ||
|
||||
endptr == num)
|
||||
workspace->num = -1;
|
||||
else workspace->num = parsed_num;
|
||||
LOG("num = %d\n", workspace->num);
|
||||
|
|
Loading…
Reference in New Issue