diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 10:59:56 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:40 +1000 |
commit | c5f4f3547c0dde01c51ec1b79f53e635d1351f0b (patch) | |
tree | ae4945dc424c96fce3c961ace3fc70fbf82ef334 | |
parent | d7bcbc515647b1d6897c16e5b3ef314a10ccd02e (diff) | |
download | jimtcl-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.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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': |