aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:59:56 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:40 +1000
commitc5f4f3547c0dde01c51ec1b79f53e635d1351f0b (patch)
treeae4945dc424c96fce3c961ace3fc70fbf82ef334
parentd7bcbc515647b1d6897c16e5b3ef314a10ccd02e (diff)
downloadjimtcl-c5f4f3547c0dde01c51ec1b79f53e635d1351f0b.zip
jimtcl-c5f4f3547c0dde01c51ec1b79f53e635d1351f0b.tar.gz
jimtcl-c5f4f3547c0dde01c51ec1b79f53e635d1351f0b.tar.bz2
Fix a couple of bugs
format %.0f was wrong Minor bug in [string trimright] *: When the string was empty, a read was done of str[-1] ------------------------------------------------------------------------
-rw-r--r--jim.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/jim.c b/jim.c
index dbb687b..f45153f 100644
--- a/jim.c
+++ b/jim.c
@@ -2242,11 +2242,13 @@ static void trim_right(char *str, const char *trimchars)
char *end = str - 1;
int c;
- for (c = *p; p != end; p--, c = *p) {
+ while (p != end) {
+ c = *p;
if (strchr(trimchars, c) == 0) {
end = p;
break;
}
+ p--;
}
p[1] = 0;
}
@@ -2373,11 +2375,6 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
break;
/* non-terminals */
- case '0': /* zero pad */
- zpad = 1;
- fmt++; fmtLen--;
- goto next_fmt;
- break;
case '+':
forceplus = 1;
fmt++; fmtLen--;
@@ -2403,6 +2400,15 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
fmt++; fmtLen--;
goto next_fmt;
break;
+ case '0':
+ if (!inprec) {
+ /* zero pad */
+ zpad = 1;
+ fmt++; fmtLen--;
+ goto next_fmt;
+ break;
+ }
+ /* fall through */
case '1':
case '2':
case '3':