summaryrefslogtreecommitdiff
path: root/Src/text.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-04-23 15:24:00 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-04-23 15:24:00 +0000
commit24477a7ff4e05f460b27866f8b16ca494e9ce9d5 (patch)
treea0ce447741071c6d3b19b36376210c9bcd36608c /Src/text.c
parent738c305a262ac8f4564ee1a1588830b95c738d0a (diff)
downloadzsh-24477a7ff4e05f460b27866f8b16ca494e9ce9d5.tar.gz
zsh-24477a7ff4e05f460b27866f8b16ca494e9ce9d5.zip
23308: sanity for tindent in text output
Diffstat (limited to 'Src/text.c')
-rw-r--r--Src/text.c42
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;