mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
unsigned long may be smaller than mrb_int; use uint64_t instead; fix #2935
This commit is contained in:
@@ -73,7 +73,7 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base)
|
||||
{
|
||||
char buf[64], *b = buf + sizeof buf;
|
||||
mrb_int num = mrb_fixnum(x);
|
||||
unsigned long val = (unsigned long)num;
|
||||
uint64_t val = (uint64_t)num;
|
||||
char d;
|
||||
|
||||
if (base != 2) {
|
||||
|
||||
+4
-4
@@ -1863,7 +1863,7 @@ mrb_cstr_to_inum(mrb_state *mrb, const char *str, int base, int badcheck)
|
||||
const char *p;
|
||||
char sign = 1;
|
||||
int c, uscore;
|
||||
unsigned long n = 0;
|
||||
uint64_t n = 0;
|
||||
mrb_int val;
|
||||
|
||||
#define conv_digit(c) \
|
||||
@@ -1983,9 +1983,9 @@ mrb_cstr_to_inum(mrb_state *mrb, const char *str, int base, int badcheck)
|
||||
}
|
||||
n *= base;
|
||||
n += c;
|
||||
}
|
||||
if (n > MRB_INT_MAX) {
|
||||
mrb_raisef(mrb, E_ARGUMENT_ERROR, "string (%S) too big for integer", mrb_str_new_cstr(mrb, str));
|
||||
if (n > MRB_INT_MAX) {
|
||||
mrb_raisef(mrb, E_ARGUMENT_ERROR, "string (%S) too big for integer", mrb_str_new_cstr(mrb, str));
|
||||
}
|
||||
}
|
||||
val = n;
|
||||
if (badcheck) {
|
||||
|
||||
Reference in New Issue
Block a user