- TAILQ_FOREACH(assignment, &ws_assignments, ws_assignments) {
- if (strcasecmp(assignment->name, workspace) == 0) {
- ELOG("You have a duplicate workspace assignment for workspace \"%s\"\n",
- workspace);
+
+ /* When a new workspace line is encountered, for the first output word,
+ * $workspace from the config.spec is non-NULL. Afterwards, the parser calls
+ * clear_stack() because of the call line. Thus, we have to preserve the
+ * workspace string. */
+ if (workspace) {
+ FREE(current_workspace);
+
+ TAILQ_FOREACH(assignment, &ws_assignments, ws_assignments) {
+ if (strcasecmp(assignment->name, workspace) == 0) {
+ ELOG("You have a duplicate workspace assignment for workspace \"%s\"\n",
+ workspace);
+ return;
+ }
+ }
+
+ current_workspace = sstrdup(workspace);
+ } else {
+ if (!current_workspace) {
+ DLOG("Both workspace and current_workspace are NULL, assuming we had an error before\n");