diff options
Diffstat (limited to 'sway/ipc-json.c')
-rw-r--r-- | sway/ipc-json.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c index d3731092..1ebc3bd2 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c | |||
@@ -384,8 +384,19 @@ static json_object *ipc_json_describe_scratchpad_output(void) { | |||
384 | 384 | ||
385 | static void ipc_json_describe_workspace(struct sway_workspace *workspace, | 385 | static void ipc_json_describe_workspace(struct sway_workspace *workspace, |
386 | json_object *object) { | 386 | json_object *object) { |
387 | int num = isdigit(workspace->name[0]) ? atoi(workspace->name) : -1; | 387 | int num; |
388 | 388 | if (isdigit(workspace->name[0])) { | |
389 | errno = 0; | ||
390 | char *endptr = NULL; | ||
391 | long long parsed_num = strtoll(workspace->name, &endptr, 10); | ||
392 | if (errno != 0 || parsed_num > INT32_MAX || parsed_num < 0 || endptr == workspace->name) { | ||
393 | num = -1; | ||
394 | } else { | ||
395 | num = (int) parsed_num; | ||
396 | } | ||
397 | } else { | ||
398 | num = -1; | ||
399 | } | ||
389 | json_object_object_add(object, "num", json_object_new_int(num)); | 400 | json_object_object_add(object, "num", json_object_new_int(num)); |
390 | json_object_object_add(object, "fullscreen_mode", json_object_new_int(1)); | 401 | json_object_object_add(object, "fullscreen_mode", json_object_new_int(1)); |
391 | json_object_object_add(object, "output", workspace->output ? | 402 | json_object_object_add(object, "output", workspace->output ? |