1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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/trunk@9440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2005-10-22 04:27:48 +00:00
parent 62af481d0e
commit e819e0c778
2 changed files with 13 additions and 11 deletions

View file

@ -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 * object.c (sym_inspect), parse.y (parser_yylex, rb_symname_p): check
if valid as a symbol name more strictly. [ruby-dev:27478] if valid as a symbol name more strictly. [ruby-dev:27478]
* test/ruby/test_symbol.rb: tests for [ruby-core:03573]. * 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]
Sat Oct 22 10:08:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> Sat Oct 22 10:08:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* missing.h, missing/*.c: SUSv3 compatible strcasecmp and strncasecmp, * missing.h, missing/*.c: SUSv3 compatible strcasecmp and strncasecmp,

19
time.c
View file

@ -1670,12 +1670,11 @@ time_to_a(VALUE time)
#define SMALLBUF 100 #define SMALLBUF 100
static int static int
rb_strftime(char ** volatile buf, rb_strftime(char **buf,
char * volatile format, const char *format,
struct tm * volatile time) struct tm *time)
{ {
volatile int size; int size, len, flen;
int len, flen;
(*buf)[0] = '\0'; (*buf)[0] = '\0';
flen = strlen(format); flen = strlen(format);
@ -1746,8 +1745,8 @@ static VALUE
time_strftime(VALUE time, VALUE format) time_strftime(VALUE time, VALUE format)
{ {
struct time_object *tobj; struct time_object *tobj;
char buffer[SMALLBUF]; char buffer[SMALLBUF], *buf = buffer;
char *fmt, *buf = buffer; const char *fmt;
long len; long len;
VALUE str; VALUE str;
@ -1764,19 +1763,19 @@ time_strftime(VALUE time, VALUE format)
} }
else if (strlen(fmt) < len) { else if (strlen(fmt) < len) {
/* Ruby string may contain \0's. */ /* 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); str = rb_str_new(0, 0);
while (p < pe) { while (p < pe) {
len = rb_strftime(&buf, p, &tobj->tm); len = rb_strftime(&buf, p, &tobj->tm);
rb_str_cat(str, buf, len); rb_str_cat(str, buf, len);
p += strlen(p) + 1; p += strlen(p) + 1;
if (p <= pe)
rb_str_cat(str, "\0", 1);
if (buf != buffer) { if (buf != buffer) {
free(buf); free(buf);
buf = buffer; buf = buffer;
} }
for (fmt = p; p < pe && !*p; ++p);
if (p > fmt) rb_str_cat(str, fmt, p - fmt);
} }
return str; return str;
} }