From 6d48cd9da5750f230d086f3f626c80125bcf0731 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 16 May 2009 23:55:46 +0000 Subject: * ruby.c (set_arg0): get rids of overrun. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby.c | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'ruby.c') diff --git a/ruby.c b/ruby.c index 99f1f1984..5f797851c 100644 --- a/ruby.c +++ b/ruby.c @@ -124,7 +124,7 @@ static struct { int argc; char **argv; #if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE) - int len; + size_t len; #endif } origarg; @@ -1623,7 +1623,7 @@ rb_load_file(const char *fname) extern char **environ; #endif -static int +static size_t get_arglen(int argc, char **argv) { char *s = argv[0]; @@ -1686,7 +1686,7 @@ set_arg0(VALUE val, ID id) #else if (i >= origarg.len) { - i = origarg.len; + i = origarg.len - 1; } memcpy(origarg.argv[0], s, i); @@ -1823,24 +1823,7 @@ ruby_process_options(int argc, char **argv) void ruby_sysinit(int *argc, char ***argv) { -#if defined(__APPLE__) && (defined(__MACH__) || defined(__DARWIN__)) - int i, n = *argc, len = 0; - char **v1 = *argv, **v2, *p; - - for (i = 0; i < n; ++i) { - len += strlen(v1[i]) + 1; - } - v2 = malloc((n + 1)* sizeof(char*) + len); - p = (char *)&v2[n + 1]; - for (i = 0; i < n; ++i) { - int l = strlen(v1[i]); - memcpy(p, v1[i], l + 1); - v2[i] = p; - p += l + 1; - } - v2[n] = 0; - *argv = v2; -#elif defined(_WIN32) +#if defined(_WIN32) void rb_w32_sysinit(int *argc, char ***argv); rb_w32_sysinit(argc, argv); #endif -- cgit