diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-17 01:29:17 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-17 01:29:17 +0000 |
commit | 22cde7b682328ba195ce0ee214edb6c2feb81b23 (patch) | |
tree | 7873fbf3dad59cb2042390c1c2dbfe90d5b6e647 /variable.c | |
parent | ea9628c3bc700c5162a6298b79d2b8cd7a334fea (diff) | |
download | ruby-22cde7b682328ba195ce0ee214edb6c2feb81b23.tar.gz |
* dir.c, dln.c, parse.y, re.c, ruby.c, sprintf.c, strftime.c,
string.c, util.c, variable.c: use strlcpy, memcpy and snprintf
instead of strcpy, strncpy and sprintf.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'variable.c')
-rw-r--r-- | variable.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/variable.c b/variable.c index 7743b6778f..ccec03049c 100644 --- a/variable.c +++ b/variable.c @@ -455,10 +455,11 @@ global_id(const char *name) if (name[0] == '$') id = rb_intern(name); else { - char *buf = ALLOCA_N(char, strlen(name)+2); + size_t len = strlen(name); + char *buf = ALLOCA_N(char, len+1); buf[0] = '$'; - strcpy(buf+1, name); - id = rb_intern(buf); + memcpy(buf+1, name, len); + id = rb_intern2(buf, len+1); } return id; } @@ -733,13 +734,14 @@ VALUE rb_f_global_variables(void) { VALUE ary = rb_ary_new(); - char buf[4]; - const char *s = "123456789"; + char buf[2]; + int i; st_foreach_safe(rb_global_tbl, gvar_i, ary); - while (*s) { - sprintf(buf, "$%c", *s++); - rb_ary_push(ary, ID2SYM(rb_intern(buf))); + buf[0] = '$'; + for (i = 1; i <= 9; ++i) { + buf[1] = (char)(i + '0'); + rb_ary_push(ary, ID2SYM(rb_intern2(buf, 2))); } return ary; } |