aboutsummaryrefslogtreecommitdiffstats
path: root/strftime.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-11-25 14:24:47 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-11-25 14:24:47 +0000
commit446ea127c331f14701a993f404e3a930055173cf (patch)
treee7cb9f42c2161fd489c71f85bbcc3bfa6c17dc72 /strftime.c
parenta689e57283121d1e3ab2a9697459839828317b17 (diff)
downloadruby-446ea127c331f14701a993f404e3a930055173cf.tar.gz
* strftime.c (rb_strftime): should not swallow incomplete
formatter, e.g. "%E". [ruby-dev:37170] fix: #787 * strftime.c (rb_strftime): clear flags before processing unknown formatter, e.g. "%i". [ruby-dev:37180] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'strftime.c')
-rw-r--r--strftime.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/strftime.c b/strftime.c
index 5002c56c06..7913c792a5 100644
--- a/strftime.c
+++ b/strftime.c
@@ -310,8 +310,8 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept
again:
switch (*++format) {
case '\0':
- *s++ = '%';
- goto out;
+ format--;
+ goto unknown;
case '%':
*s++ = '%';
@@ -762,8 +762,11 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept
default:
unknown:
- tp = sp;
i = format - sp + 1;
+ tp = sp;
+ precision = -1;
+ flags = 0;
+ padding = 0;
break;
}
if (i) {
@@ -786,7 +789,6 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept
}
}
}
-out:
if (s >= endp) {
goto err;
}