} \
} while (0)
+/** If an error occured during parsing of the criteria, we want to exit instead
+ * of relying on fallback behavior. See #2091. */
+#define HANDLE_INVALID_MATCH \
+ do { \
+ if (current_match->error != NULL) { \
+ yerror("Invalid match: %s", current_match->error); \
+ return; \
+ } \
+ } while (0)
+
/** When the command did not include match criteria (!), we use the currently
* focused container. Do not confuse this case with a command which included
* criteria but which did not match any windows. This macro has to be called in
*/
#define HANDLE_EMPTY_MATCH \
do { \
+ HANDLE_INVALID_MATCH; \
+ \
if (match_is_empty(current_match)) { \
owindow *ow = smalloc(sizeof(owindow)); \
ow->con = focused; \
return;
}
+ HANDLE_INVALID_MATCH;
+
/* check if the match is empty, not if the result is empty */
if (match_is_empty(current_match))
tree_close_con(kill_mode);