summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-26 08:08:16 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-26 08:08:16 +0000
commitec187ff8473f3c2091253496595b515ea59d2ec0 (patch)
treeb02f97bb8612fd050b661485b87ffb31e432debd /vm.c
parent5212b7fb5206329151f52532e0818832186f0346 (diff)
* vm.c (backtrace_*): change type of lev and n from size_t to int.
Also set type of rb_backtrace_t#backtrace_size to int. A patch from nobu. * vm_eval.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/vm.c b/vm.c
index 0357a3d29b..7e5e39bce6 100644
--- a/vm.c
+++ b/vm.c
@@ -1026,7 +1026,7 @@ frame_info_to_str_m(VALUE self)
typedef struct rb_backtrace_struct {
rb_frame_info_t *backtrace;
rb_frame_info_t *backtrace_base;
- size_t backtrace_size;
+ int backtrace_size;
VALUE strary;
} rb_backtrace_t;
@@ -1198,9 +1198,13 @@ backtreace_collect(rb_backtrace_t *bt, int lev, int n, VALUE (*func)(rb_frame_in
VALUE btary;
int i;
+ if (UNLIKELY(lev < 0 || n < 0)) {
+ rb_bug("backtreace_collect: unreachable");
+ }
+
btary = rb_ary_new();
- for (i=0; i+lev<(int)bt->backtrace_size && i<n; i++) {
+ for (i=0; i+lev<bt->backtrace_size && i<n; i++) {
rb_frame_info_t *fi = &bt->backtrace[bt->backtrace_size - 1 - (lev+i)];
rb_ary_push(btary, func(fi, arg));
}
@@ -1230,10 +1234,10 @@ rb_backtrace_to_str_ary(VALUE self)
}
static VALUE
-backtrace_to_str_ary2(VALUE self, size_t lev, size_t n)
+backtrace_to_str_ary2(VALUE self, int lev, int n)
{
rb_backtrace_t *bt;
- size_t size;
+ int size;
GetCoreDataFromValue(self, rb_backtrace_t, bt);
size = bt->backtrace_size;
@@ -1261,10 +1265,10 @@ frame_info_create(rb_frame_info_t *srcfi, void *btobj)
}
static VALUE
-backtrace_to_frame_ary(VALUE self, size_t lev, size_t n)
+backtrace_to_frame_ary(VALUE self, int lev, int n)
{
rb_backtrace_t *bt;
- size_t size;
+ int size;
GetCoreDataFromValue(self, rb_backtrace_t, bt);
size = bt->backtrace_size;
@@ -1295,13 +1299,13 @@ backtrace_load_data(VALUE self, VALUE str)
}
static VALUE
-vm_backtrace_str_ary(rb_thread_t *th, size_t lev, size_t n)
+vm_backtrace_str_ary(rb_thread_t *th, int lev, int n)
{
return backtrace_to_str_ary2(backtrace_object(th), lev, n);
}
static VALUE
-vm_backtrace_frame_ary(rb_thread_t *th, size_t lev, size_t n)
+vm_backtrace_frame_ary(rb_thread_t *th, int lev, int n)
{
return backtrace_to_frame_ary(backtrace_object(th), lev, n);
}