summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-17 01:29:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-17 01:29:17 +0000
commit22cde7b682328ba195ce0ee214edb6c2feb81b23 (patch)
tree7873fbf3dad59cb2042390c1c2dbfe90d5b6e647 /variable.c
parentea9628c3bc700c5162a6298b79d2b8cd7a334fea (diff)
* 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.c18
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;
}