From 026da321ebf2f09d17e3978aacf10b513d46460c Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Wed, 31 Dec 2025 04:17:20 -0500 Subject: return 0 for match_bracket() if no match found --- main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index ee25eac..db6d641 100644 --- a/main.c +++ b/main.c @@ -160,7 +160,7 @@ static inline int bracket_dir(u32 c) { } } -TxtLoc match_bracket(TxtLoc l) { +int match_bracket(TxtLoc l, TxtLoc *out) { u32 depth = 1; u32 c = txt_chr(l); u32 o = bracket_opp(c); @@ -181,7 +181,12 @@ TxtLoc match_bracket(TxtLoc l) { } } - return l; + if (depth == 0) { + *out = l; + return 1; + } else { + return 0; + } } TxtLoc next_func_end(TxtLoc l) { @@ -203,11 +208,14 @@ TxtLoc prev_func_end(TxtLoc l) { } TxtLoc prev_func(TxtLoc l) { - return match_bracket(prev_func_end(l)); + match_bracket(prev_func_end(l), &l); + return l; } TxtLoc next_func(TxtLoc l) { - return match_bracket(next_func_end(match_bracket(l))); + match_bracket(l, &l); + match_bracket(next_func_end(l), &l); + return l; } int empty_line(TxtLoc l) { @@ -503,7 +511,7 @@ loop: l = next_func(l); break; case '%': - l = match_bracket(l); + if (!match_bracket(l, &l)) return 0; break; case KEY_PGUP: for (u32 i = 0; i < LINES; i += 3) l = prev_line(l); -- cgit v1.2.3