Bugfix: Correctly handle workspace names which do not start with a zero

This commit is contained in:
Michael Stapelberg 2011-09-05 22:21:10 +02:00
parent b4809e9ba7
commit 8928b5f55d
2 changed files with 8 additions and 5 deletions

View File

@ -447,10 +447,12 @@ void init_ws_for_output(Output *output, Con *content) {
if (!exists) { if (!exists) {
/* Set ->num to the number of the workspace, if the name actually /* Set ->num to the number of the workspace, if the name actually
* is a number or starts with a number */ * 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 || if (parsed_num == LONG_MIN ||
parsed_num == LONG_MAX || parsed_num == LONG_MAX ||
parsed_num <= 0) parsed_num < 0 ||
endptr == ws->name)
ws->num = -1; ws->num = -1;
else ws->num = parsed_num; else ws->num = parsed_num;
LOG("Used number %d for workspace with name %s\n", ws->num, ws->name); LOG("Used number %d for workspace with name %s\n", ws->num, ws->name);

View File

@ -49,11 +49,12 @@ Con *workspace_get(const char *num, bool *created) {
workspace->name = sstrdup(num); workspace->name = sstrdup(num);
/* We set ->num to the number if this workspaces name consists only of /* We set ->num to the number if this workspaces name consists only of
* a positive number. Otherwise its a named ws and num will be -1. */ * a positive number. Otherwise its a named ws and num will be -1. */
char *endptr = NULL;
long parsed_num = strtol(num, NULL, 10); long parsed_num = strtol(num, &endptr, 10);
if (parsed_num == LONG_MIN || if (parsed_num == LONG_MIN ||
parsed_num == LONG_MAX || parsed_num == LONG_MAX ||
parsed_num < 0) parsed_num < 0 ||
endptr == num)
workspace->num = -1; workspace->num = -1;
else workspace->num = parsed_num; else workspace->num = parsed_num;
LOG("num = %d\n", workspace->num); LOG("num = %d\n", workspace->num);