summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bin/hi.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/bin/hi.c b/bin/hi.c
index 5acca9b2..40f873d0 100644
--- a/bin/hi.c
+++ b/bin/hi.c
@@ -246,7 +246,20 @@ int main(int argc, char *argv[]) {
 			regex_t regex = compile(Languages[i].pattern, REG_NOSUB);
 			regfree(&regex);
 			for (size_t j = 0; j < Languages[i].len; ++j) {
-				regex = compile(Languages[i].syntax[j].pattern, REG_NOSUB);
+				struct Syntax syn = Languages[i].syntax[j];
+				regex = compile(syn.pattern, 0);
+				if (regex.re_nsub >= SubsLen) {
+					errx(
+						EX_SOFTWARE,
+						"too many subexpressions: %s", syn.pattern
+					);
+				}
+				if (syn.subexp > regex.re_nsub) {
+					errx(
+						EX_SOFTWARE,
+						"no subexpression %zu: %s", syn.subexp, syn.pattern
+					);
+				}
 				regfree(&regex);
 			}
 		}
joinJune McEnroe 2019-07-02Restart process in sandmanJune McEnroe 2019-02-27Add /move commandJune McEnroe 2019-02-26Add M-/ to switch to previously active windowJune McEnroe 2019-02-25Move nick and tag coloring to color.cJune McEnroe 2019-02-25Add M-l to list the logJune McEnroe 2019-02-25Output raw to standard error if it is not a terminalJune McEnroe 2019-02-25Update tag colorsJune McEnroe 2019-02-25Add color to tagsJune McEnroe 2019-02-25Remove tag X macros againJune McEnroe 2019-02-25Add M-a to switch to hot or unread windowJune McEnroe 2019-02-25Refactor uiReadJune McEnroe 2019-02-24Scroll by full pages with PageUp/PageDownJune McEnroe 2019-02-23Clarify /window documentationJune McEnroe 2019-02-23Use first word of params in input commandsJune McEnroe 2019-02-23Add C-n and C-p key bindings to switch windowsJune McEnroe 2019-02-23Change example command to join #ascii.town on freenodeJune McEnroe 2019-02-23Call def_prog_mode after termNoFlowJune McEnroe 2019-02-22Move IRC formatting reset to C-sJune McEnroe 2019-02-22Disable terminal flow controlJune McEnroe 2019-02-22Bind up and down arrows to scrollJune McEnroe 2019-02-22Remove topic TODOJune McEnroe 2019-02-22Add /znc commandJune McEnroe 2019-02-22Update status line after scrolling and term eventsJune McEnroe 2019-02-22Reorganize input.cJune McEnroe 2019-02-22Fix name of <raw> window in man pageJune McEnroe 2019-02-22Rename global tags with angle bracketsJune McEnroe 2019-02-22Show status window while connectingJune McEnroe 2019-02-22Reorganize UI code for the umpteenth timeJune McEnroe 2019-02-21Replace "view" with "window"June McEnroe 2019-02-21Remove ROT13June McEnroe 2019-02-21Clean up man pageJune McEnroe 2019-01-26Draw UI before connectingJune McEnroe 2019-01-25Avoid unused variable warnings with getyxJune McEnroe 2019-01-25Add GNU/Linux build instructionsJune McEnroe