mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'master' into tests_for_bigint
This commit is contained in:
@@ -15,13 +15,13 @@ MRuby::CrossBuild.new("i586-pc-msdosdjgpp") do |conf|
|
||||
|
||||
conf.cc do |cc|
|
||||
cc.command = DJGPP_PATH ? File.join(DJGPP_PATH, GCC) : GCC
|
||||
cc.defines << 'MRB_WITHOUT_IO_PREAD_PWRITE'
|
||||
cc.defines << 'MRB_NO_IO_PREAD_PWRITE'
|
||||
cc.defines << 'MRB_UTF8_STRING'
|
||||
end
|
||||
|
||||
conf.cxx do |cxx|
|
||||
cxx.command = DJGPP_PATH ? File.join(DJGPP_PATH, GXX) : GXX
|
||||
cxx.defines << 'MRB_WITHOUT_IO_PREAD_PWRITE'
|
||||
cxx.defines << 'MRB_NO_IO_PREAD_PWRITE'
|
||||
cxx.defines << 'MRB_UTF8_STRING'
|
||||
end
|
||||
|
||||
|
||||
@@ -589,8 +589,12 @@ mpz_mdiv(mrb_state *mrb, mpz_t *q, mpz_t *x, mpz_t *y)
|
||||
if (uzero_p(q))
|
||||
q->sn = 0;
|
||||
/* now if r != 0 and q < 0 we need to round q towards -inf */
|
||||
if (!uzero_p(&r) && qsign < 0)
|
||||
if (!uzero_p(&r) && qsign < 0) {
|
||||
/* add 1 to magnitude */
|
||||
mpz_add_int(mrb, q, 1);
|
||||
/* force negative sign in case the value of q was zero before rounding */
|
||||
q->sn = -1;
|
||||
}
|
||||
mpz_clear(mrb, &r);
|
||||
}
|
||||
|
||||
@@ -654,8 +658,12 @@ mpz_mdivmod(mrb_state *mrb, mpz_t *q, mpz_t *r, mpz_t *x, mpz_t *y)
|
||||
if (uzero_p(q))
|
||||
q->sn = 0;
|
||||
/* now if r != 0 and q < 0 we need to round q towards -inf */
|
||||
if (!uzero_p(r) && qsign < 0)
|
||||
if (!uzero_p(r) && qsign < 0) {
|
||||
/* add 1 to magnitude */
|
||||
mpz_add_int(mrb, q, 1);
|
||||
/* force negative sign in case the value of q was zero before rounding */
|
||||
q->sn = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -820,40 +828,40 @@ static const mp_limb base_limit[34*2] = {
|
||||
42875, // 35^3
|
||||
46656, // 36^3
|
||||
#else
|
||||
3486784401, // 3^20
|
||||
3486784401UL, // 3^20
|
||||
0, // 4^16 (skip)
|
||||
1220703125, // 5^13
|
||||
2176782336, // 6^12
|
||||
1977326743, // 7^11
|
||||
1220703125UL, // 5^13
|
||||
2176782336UL, // 6^12
|
||||
1977326743UL, // 7^11
|
||||
0, // 8^10 (skip)
|
||||
3486784401, // 9^10
|
||||
1000000000, // 10^9
|
||||
2357947691, // 11^9
|
||||
429981696, // 12^8
|
||||
815730721, // 13^8
|
||||
1475789056, // 14^8
|
||||
2562890625, // 15^8
|
||||
3486784401UL, // 9^10
|
||||
1000000000UL, // 10^9
|
||||
2357947691UL, // 11^9
|
||||
429981696UL, // 12^8
|
||||
815730721UL, // 13^8
|
||||
1475789056UL, // 14^8
|
||||
2562890625UL, // 15^8
|
||||
0, // 16^8 (skip)
|
||||
410338673, // 17^7
|
||||
612220032, // 18^7
|
||||
893871739, // 19^7
|
||||
1280000000, // 20^7
|
||||
1801088541, // 21^7
|
||||
2494357888, // 22^7
|
||||
3404825447, // 23^7
|
||||
191102976, // 24^6
|
||||
244140625, // 25^6
|
||||
308915776, // 26^6
|
||||
387420489, // 27^6
|
||||
481890304, // 28^6
|
||||
594823321, // 29^6
|
||||
729000000, // 30^6
|
||||
887503681, // 31^6
|
||||
410338673UL, // 17^7
|
||||
612220032UL, // 18^7
|
||||
893871739UL, // 19^7
|
||||
1280000000UL, // 20^7
|
||||
1801088541UL, // 21^7
|
||||
2494357888UL, // 22^7
|
||||
3404825447UL, // 23^7
|
||||
191102976UL, // 24^6
|
||||
244140625UL, // 25^6
|
||||
308915776UL, // 26^6
|
||||
387420489UL, // 27^6
|
||||
481890304UL, // 28^6
|
||||
594823321UL, // 29^6
|
||||
729000000UL, // 30^6
|
||||
887503681UL, // 31^6
|
||||
0, // 32^6 (skip)
|
||||
1291467969, // 33^6
|
||||
1544804416, // 34^6
|
||||
1838265625, // 35^6
|
||||
2176782336, // 36^6
|
||||
1291467969UL, // 33^6
|
||||
1544804416UL, // 34^6
|
||||
1838265625UL, // 35^6
|
||||
2176782336UL, // 36^6
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(MRB_WITHOUT_IO_PREAD_PWRITE)
|
||||
# undef MRB_WITH_IO_PREAD_PWRITE
|
||||
#elif !defined(MRB_WITH_IO_PREAD_PWRITE)
|
||||
# if defined(__unix__) || defined(__MACH__)
|
||||
# define MRB_WITH_IO_PREAD_PWRITE
|
||||
#if defined(MRB_NO_IO_PREAD_PWRITE) || defined(MRB_WITHOUT_IO_PREAD_PWRITE)
|
||||
# undef MRB_USE_IO_PREAD_PWRITE
|
||||
#elif !defined(MRB_USE_IO_PREAD_PWRITE)
|
||||
# if defined(__unix__) || defined(__MACH__) || defined(MRB_WITH_IO_PREAD_PWRITE)
|
||||
# define MRB_USE_IO_PREAD_PWRITE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ mrb_file__gethome(mrb_state *mrb, mrb_value klass)
|
||||
char *pathp = RSTRING_PTR(path);
|
||||
const char *const pathend = pathp + RSTRING_LEN(path);
|
||||
for (;;) {
|
||||
pathp = memchr(pathp, '\\', pathend - pathp);
|
||||
pathp = memchr((void*)pathp, '\\', (size_t)(pathend - pathp));
|
||||
if (!pathp) break;
|
||||
*pathp++ = '/';
|
||||
}
|
||||
|
||||
@@ -1502,7 +1502,7 @@ io_sync(mrb_state *mrb, mrb_value io)
|
||||
return mrb_bool_value(fptr->sync);
|
||||
}
|
||||
|
||||
#ifndef MRB_WITH_IO_PREAD_PWRITE
|
||||
#ifndef MRB_USE_IO_PREAD_PWRITE
|
||||
# define io_pread mrb_notimplement_m
|
||||
# define io_pwrite mrb_notimplement_m
|
||||
#else
|
||||
@@ -1541,7 +1541,7 @@ io_pwrite(mrb_state *mrb, mrb_value io)
|
||||
|
||||
return io_write_common(mrb, pwrite, io_get_write_fptr(mrb, io), RSTRING_PTR(buf), RSTRING_LEN(buf), value2off(mrb, off));
|
||||
}
|
||||
#endif /* MRB_WITH_IO_PREAD_PWRITE */
|
||||
#endif /* MRB_USE_IO_PREAD_PWRITE */
|
||||
|
||||
static mrb_value
|
||||
io_ungetc(mrb_state *mrb, mrb_value io)
|
||||
|
||||
@@ -589,7 +589,7 @@ assert('IO#sysseek') do
|
||||
end
|
||||
|
||||
assert('IO#pread') do
|
||||
skip "IO#pread is not implemented on this configuration" unless MRubyIOTestUtil::MRB_WITH_IO_PREAD_PWRITE
|
||||
skip "IO#pread is not implemented on this configuration" unless MRubyIOTestUtil::MRB_USE_IO_PREAD_PWRITE
|
||||
|
||||
IO.open(IO.sysopen($mrbtest_io_rfname, 'r'), 'r') do |io|
|
||||
assert_equal $mrbtest_io_msg.byteslice(5, 8), io.pread(8, 5)
|
||||
@@ -601,7 +601,7 @@ assert('IO#pread') do
|
||||
end
|
||||
|
||||
assert('IO#pwrite') do
|
||||
skip "IO#pwrite is not implemented on this configuration" unless MRubyIOTestUtil::MRB_WITH_IO_PREAD_PWRITE
|
||||
skip "IO#pwrite is not implemented on this configuration" unless MRubyIOTestUtil::MRB_USE_IO_PREAD_PWRITE
|
||||
|
||||
IO.open(IO.sysopen($mrbtest_io_wfname, 'w+'), 'w+') do |io|
|
||||
assert_equal 6, io.pwrite("Warld!", 7)
|
||||
|
||||
@@ -225,10 +225,10 @@ mrb_io_win_p(mrb_state *mrb, mrb_value klass)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef MRB_WITH_IO_PREAD_PWRITE
|
||||
# define MRB_WITH_IO_PREAD_PWRITE_ENABLED TRUE
|
||||
#ifdef MRB_USE_IO_PREAD_PWRITE
|
||||
# define MRB_USE_IO_PREAD_PWRITE_ENABLED TRUE
|
||||
#else
|
||||
# define MRB_WITH_IO_PREAD_PWRITE_ENABLED FALSE
|
||||
# define MRB_USE_IO_PREAD_PWRITE_ENABLED FALSE
|
||||
#endif
|
||||
|
||||
void
|
||||
@@ -242,7 +242,7 @@ mrb_mruby_io_gem_test(mrb_state* mrb)
|
||||
mrb_define_class_method(mrb, io_test, "rmdir", mrb_io_test_rmdir, MRB_ARGS_REQ(1));
|
||||
mrb_define_class_method(mrb, io_test, "win?", mrb_io_win_p, MRB_ARGS_NONE());
|
||||
|
||||
mrb_define_const(mrb, io_test, "MRB_WITH_IO_PREAD_PWRITE", mrb_bool_value(MRB_WITH_IO_PREAD_PWRITE_ENABLED));
|
||||
mrb_define_const(mrb, io_test, "MRB_USE_IO_PREAD_PWRITE", mrb_bool_value(MRB_USE_IO_PREAD_PWRITE_ENABLED));
|
||||
|
||||
const char *env_home = getenv("HOME");
|
||||
#ifdef _WIN32
|
||||
|
||||
Reference in New Issue
Block a user