aboutsummaryrefslogtreecommitdiff
path: root/sway/tree/workspace.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/workspace.c')
-rw-r--r--sway/tree/workspace.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 5eb4be0f..2db06a31 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -109,7 +109,6 @@ static bool workspace_valid_on_output(const char *output_name,
char *workspace_next_name(const char *output_name) {
wlr_log(L_DEBUG, "Workspace: Generating new workspace name for output %s",
output_name);
- int l = 1;
// Scan all workspace bindings to find the next available workspace name,
// if none are found/available then default to a number
struct sway_mode *mode = config->current_mode;
@@ -202,14 +201,9 @@ char *workspace_next_name(const char *output_name) {
// As a fall back, get the current number of active workspaces
// and return that + 1 for the next workspace's name
int ws_num = root_container.children->length;
- if (ws_num >= 10) {
- l = 2;
- } else if (ws_num >= 100) {
- l = 3;
- }
+ int l = snprintf(NULL, 0, "%d", ws_num);
char *name = malloc(l + 1);
- if (!name) {
- wlr_log(L_ERROR, "Could not allocate workspace name");
+ if (!sway_assert(name, "Cloud not allocate workspace name")) {
return NULL;
}
sprintf(name, "%d", ws_num++);
@@ -271,6 +265,9 @@ struct sway_container *workspace_by_name(const char *name) {
*/
struct sway_container *workspace_output_prev_next_impl(
struct sway_container *output, bool next) {
+ if (!output) {
+ return NULL;
+ }
if (!sway_assert(output->type == C_OUTPUT,
"Argument must be an output, is %d", output->type)) {
return NULL;
@@ -303,6 +300,9 @@ struct sway_container *workspace_output_prev_next_impl(
*/
struct sway_container *workspace_prev_next_impl(
struct sway_container *workspace, bool next) {
+ if (!workspace) {
+ return NULL;
+ }
if (!sway_assert(workspace->type == C_WORKSPACE,
"Argument must be a workspace, is %d", workspace->type)) {
return NULL;