This project is closed and read-only.
Backport #7903 » random.c.patch
| random.c (working copy) | ||
|---|---|---|
|
VALUE rb_cRandom;
|
||
|
#define id_minus '-'
|
||
|
#define id_plus '+'
|
||
|
static ID id_rand, id_bytes;
|
||
|
static ID id_rand, id_bytes, id_op_lt;
|
||
|
/* :nodoc: */
|
||
|
static void
|
||
| ... | ... | |
|
VALUE lim = ULONG2NUM(limit);
|
||
|
VALUE v = rb_funcall2(obj, id_rand, 1, &lim);
|
||
|
unsigned long r = NUM2ULONG(v);
|
||
|
VALUE zero = INT2FIX(0);
|
||
|
if (RTEST(rb_funcall2(v, id_op_lt, 1, &zero))) {
|
||
|
rb_raise(rb_eRangeError, "random number too small %ld", NUM2LONG(v));
|
||
|
}
|
||
|
if (r > limit) {
|
||
|
rb_raise(rb_eRangeError, "random number too big %ld", r);
|
||
|
}
|
||
| ... | ... | |
|
id_rand = rb_intern("rand");
|
||
|
id_bytes = rb_intern("bytes");
|
||
|
id_op_lt = rb_intern("<");
|
||
|
}
|
||