Limit workspace numbers within 0..INT32_MAX

Before this commit, large workspace numbers treated oddly:

   $ i3-msg 'rename workspace to 1234567890'
   # displayed in i3bar as `0`

   $ i3-msg 'rename workspace to 4294967200'
   $ i3-msg -t get_workspaces | jq '.[]|select(.focused).num'
   -96 # int32_t overflow

   $ i3-msg 'rename workspace to 99999999999999999999'
   $ i3-msg -t get_workspaces | jq '.[]|select(.focused).num'
   -1 # treated as unnumbered

This commit puts a consistent limit on workspace numbers.  Now
workspaces with numbers beyond INT32_MAX are treated as unnumbered.
This commit is contained in:
Albert Safin
2020-02-21 02:07:04 +00:00
parent d3976fee8c
commit 83c7aff089
4 changed files with 21 additions and 8 deletions

View File

@ -114,7 +114,7 @@ static int workspaces_string_cb(void *params_, const unsigned char *val, size_t
if ((config.strip_ws_numbers || config.strip_ws_name) && params->workspaces_walk->num >= 0) {
/* Special case: strip off the workspace number/name */
static char ws_num[10];
static char ws_num[32];
snprintf(ws_num, sizeof(ws_num), "%d", params->workspaces_walk->num);