I tested this patch and can confirm it fixes the issues on my end. Thanks, Joel On Fri, Sep 26, 2014 at 11:39 PM, Bart Schaefer wrote: > On Sep 26, 6:27pm, Joel Elkins wrote: > } > } % print -P "%4>.>12345" > } 123. > } % print -P "%4>.>1%{%}2345" > } 12. > } > } In my opinion, these two commands should have the same output. > > Right you are. I'm not entirely sure why this doesn't seem to affect > %<< but it looks like it has the same logic error, so I patched that > branch as well. > > > diff --git a/Src/prompt.c b/Src/prompt.c > index 9ed6c54..0cc9ef9 100644 > --- a/Src/prompt.c > +++ b/Src/prompt.c > @@ -1316,12 +1316,11 @@ prompttrunc(int arg, int truncchar, int doprint, > int endchar, > */ > for (;;) { > *ptr++ = *fulltextptr; > - if (*fulltextptr == Outpar || > - *fulltextptr == '\0') > + if (*fulltextptr == '\0' || > + *fulltextptr++ == Outpar) > break; > - if (*fulltextptr == Nularg) > + if (fulltextptr[-1] == Nularg) > remw--; > - fulltextptr++; > } > } else { > #ifdef MULTIBYTE_SUPPORT > @@ -1397,12 +1396,11 @@ prompttrunc(int arg, int truncchar, int doprint, > int endchar, > if (*skiptext == Inpar) { > /* see comment on left truncation above */ > for (;;) { > - if (*skiptext == Outpar || > - *skiptext == '\0') > + if (*skiptext == '\0' || > + *skiptext++ == Outpar) > break; > - if (*skiptext == Nularg) > + if (skiptext[-1] == Nularg) > maxwidth--; > - skiptext++; > } > } else { > #ifdef MULTIBYTE_SUPPORT > -- Joel D. Elkins