diff --git a/src/modal.c b/src/modal.c index 6566ccc..0f543c4 100644 --- a/src/modal.c +++ b/src/modal.c @@ -135,7 +135,7 @@ parse_rule(char *s) static int rewrite(void) { - char c, *p = direction ? bank_b : bank_a, *o = p; + char c, last = 0, *p = direction ? bank_b : bank_a, *o = p; while((c = *p) && c <= ' ') p++; while((c = *p)) { int i; @@ -154,7 +154,7 @@ rewrite(void) char *res = match(p, r); if(res != NULL) { char cc, *b = r->b; - if(!*b && outp_ != bank_a && outp_ != bank_b) outp_--; + if(!*b && last == ' ') outp_--; while((cc = *b++)) { if(cc == '?') commit(*b++); @@ -165,7 +165,7 @@ rewrite(void) } } } - *outp_++ = c; + *outp_++ = last = c; p++; } *outp_++ = 0;