diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2007-04-23 15:24:00 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2007-04-23 15:24:00 +0000 |
commit | 24477a7ff4e05f460b27866f8b16ca494e9ce9d5 (patch) | |
tree | a0ce447741071c6d3b19b36376210c9bcd36608c /Src/text.c | |
parent | 738c305a262ac8f4564ee1a1588830b95c738d0a (diff) | |
download | zsh-24477a7ff4e05f460b27866f8b16ca494e9ce9d5.tar.gz zsh-24477a7ff4e05f460b27866f8b16ca494e9ce9d5.tar.xz zsh-24477a7ff4e05f460b27866f8b16ca494e9ce9d5.zip |
23308: sanity for tindent in text output
Diffstat (limited to 'Src/text.c')
-rw-r--r-- | Src/text.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/Src/text.c b/Src/text.c index 181fea083..03ce59cf7 100644 --- a/Src/text.c +++ b/Src/text.c @@ -33,6 +33,14 @@ static char *tptr, *tbuf, *tlim; static int tsiz, tindent, tnewlins, tjob; +static void +dec_tindent(void) +{ + DPUTS(tindent == 0, "attempting to decrement tindent below zero"); + if (tindent > 0) + tindent--; +} + /* add a character to the text buffer */ /**/ @@ -354,7 +362,7 @@ gettext2(Estate state) state->pc++; } else { state->pc = s->u._subsh.end; - tindent--; + dec_tindent(); taddnl(); taddstr(")"); stack = 1; @@ -371,7 +379,7 @@ gettext2(Estate state) state->pc++; } else { state->pc = s->u._subsh.end; - tindent--; + dec_tindent(); taddnl(); taddstr("}"); stack = 1; @@ -387,7 +395,7 @@ gettext2(Estate state) } else stack = 1; } else { - tindent--; + dec_tindent(); stack = 1; } break; @@ -414,7 +422,7 @@ gettext2(Estate state) } else { state->strs = s->u._funcdef.strs; state->pc = s->u._funcdef.end; - tindent--; + dec_tindent(); taddnl(); taddstr("}"); stack = 1; @@ -444,7 +452,7 @@ gettext2(Estate state) taddnl(); tpush(code, 1); } else { - tindent--; + dec_tindent(); taddnl(); taddstr("done"); stack = 1; @@ -462,7 +470,7 @@ gettext2(Estate state) taddnl(); tpush(code, 1); } else { - tindent--; + dec_tindent(); taddnl(); taddstr("done"); stack = 1; @@ -475,14 +483,14 @@ gettext2(Estate state) tindent++; tpush(code, 0); } else if (!s->pop) { - tindent--; + dec_tindent(); taddnl(); taddstr("do"); tindent++; taddnl(); s->pop = 1; } else { - tindent--; + dec_tindent(); taddnl(); taddstr("done"); stack = 1; @@ -498,7 +506,7 @@ gettext2(Estate state) taddnl(); tpush(code, 1); } else { - tindent--; + dec_tindent(); taddnl(); taddstr("done"); stack = 1; @@ -536,7 +544,7 @@ gettext2(Estate state) n->pop = (state->pc - 2 + WC_CASE_SKIP(code) >= end); } } else if (state->pc < s->u._case.end) { - tindent--; + dec_tindent(); switch (WC_CASE_TYPE(code)) { case WC_CASE_OR: taddstr(" ;;"); @@ -564,7 +572,7 @@ gettext2(Estate state) s->pop = ((state->pc - 2 + WC_CASE_SKIP(code)) >= s->u._case.end); } else { - tindent--; + dec_tindent(); switch (WC_CASE_TYPE(code)) { case WC_CASE_OR: taddstr(" ;;"); @@ -578,7 +586,7 @@ gettext2(Estate state) taddstr(";|"); break; } - tindent--; + dec_tindent(); if (tnewlins) taddnl(); else @@ -601,14 +609,14 @@ gettext2(Estate state) } else if (s->pop) { stack = 1; } else if (s->u._if.cond) { - tindent--; + dec_tindent(); taddnl(); taddstr("then"); tindent++; taddnl(); s->u._if.cond = 0; } else if (state->pc < s->u._if.end) { - tindent--; + dec_tindent(); taddnl(); code = *state->pc++; if (WC_IF_TYPE(code) == WC_IF_ELIF) { @@ -622,7 +630,7 @@ gettext2(Estate state) } } else { s->pop = 1; - tindent--; + dec_tindent(); taddnl(); taddstr("fi"); stack = 1; @@ -760,14 +768,14 @@ gettext2(Estate state) n->u._subsh.end = state->pc + WC_CURSH_SKIP(state->pc[-1]); } else if (!s->pop) { state->pc = s->u._subsh.end; - tindent--; + dec_tindent(); taddnl(); taddstr("} always {"); tindent++; taddnl(); s->pop = 1; } else { - tindent--; + dec_tindent(); taddnl(); taddstr("}"); stack = 1; |