summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-22 04:27:48 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-22 04:27:48 +0000
commite85b4d45a2518f50cbfc5669f33550c0665ddc39 (patch)
treeda8f2f8162bef2cf66cfd89bcbf7423063e52b36
parent1cc1c2f77e9bcb66afc403e805c2be0088e3095a (diff)
* time.c (rb_strftime): removed meaningless volatile modifiers, and
concatenate successive nul characters at once. [ruby-dev:27472] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--time.c19
2 files changed, 13 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 909e4b2044..127b14417b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,13 @@
-Sat Oct 22 13:08:21 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Oct 22 13:26:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* object.c (sym_inspect), parse.y (parser_yylex, rb_symname_p): check
if valid as a symbol name more strictly. [ruby-dev:27478]
* test/ruby/test_symbol.rb: tests for [ruby-core:03573].
+ * time.c (rb_strftime): removed meaningless volatile modifiers, and
+ concatenate successive nul characters at once. [ruby-dev:27472]
+
Fri Oct 21 19:21:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* rubysig.h (CHECK_INTS): fixed typo. (I believe bit-or is improper)
diff --git a/time.c b/time.c
index 1fd601a00c..fefef63074 100644
--- a/time.c
+++ b/time.c
@@ -1743,12 +1743,11 @@ time_to_a(time)
#define SMALLBUF 100
static int
rb_strftime(buf, format, time)
- char ** volatile buf;
- char * volatile format;
- struct tm * volatile time;
+ char **buf;
+ const char *format;
+ struct tm *time;
{
- volatile int size;
- int len, flen;
+ int size, len, flen;
(*buf)[0] = '\0';
flen = strlen(format);
@@ -1820,8 +1819,8 @@ time_strftime(time, format)
VALUE time, format;
{
struct time_object *tobj;
- char buffer[SMALLBUF];
- char *fmt, *buf = buffer;
+ char buffer[SMALLBUF], *buf = buffer;
+ const char *fmt;
long len;
VALUE str;
@@ -1838,19 +1837,19 @@ time_strftime(time, format)
}
else if (strlen(fmt) < len) {
/* Ruby string may contain \0's. */
- char *p = fmt, *pe = fmt + len;
+ const char *p = fmt, *pe = fmt + len;
str = rb_str_new(0, 0);
while (p < pe) {
len = rb_strftime(&buf, p, &tobj->tm);
rb_str_cat(str, buf, len);
p += strlen(p) + 1;
- if (p <= pe)
- rb_str_cat(str, "\0", 1);
if (buf != buffer) {
free(buf);
buf = buffer;
}
+ for (fmt = p; p < pe && !*p; ++p);
+ if (p > fmt) rb_str_cat(str, fmt, p - fmt);
}
return str;
}