| Age | Commit message (Collapse) | Author |
|
|
|
Fix to avoid warning
|
|
|
|
Add test of negative arguments for Integer#%
|
|
|
|
|
|
Excluding wait call for windows
|
|
|
|
fix maximum value of the index when access breakpoints.
|
|
remove unnecessary <inttypes.h> inclusion
|
|
MSVC 2015 implements inline keyword
|
|
|
|
The format specifier macros were needed to portably print a mrb_int,
because mrb_raisef() originally called vsnprintf(). It doesn't anymore
since 18b2683b97ae54d4f2f15c19076f33aa29eaf2b7 and the mrb_int format
specifier macros are already gone.
|
|
Apparently the C compiler of Visual Studio 2015 CTP6 finally implements
inline as inline and not only as _inline and __inline.
|
|
mruby-time: call ISO C11's timespec_get() if available
|
|
refactor write_pool_block()
|
|
No need to write the same assertion in each case (except the default
one). Instead we can assert after the switch statement.
|
|
gettimeofday() is an obsolescent POSIX function which may be removed in
a future version. POSIX recommends using clock_gettime() (also POSIX)
instead, but it isn't available on OS X or Windows (at least with MSVC
and older MinGW versions).
Whereas timespec_get() is part of ISO C11 and mruby uses some small
other C11 features too. It isn't universally available yet either, but
it might be in the future. And Visual C++ 2015 implements it! Since
mruby strives for ISO C and not POSIX compatibility, I think it's a
reasonable choice.
TIME_UTC is used instead of __STDC_VERSION__, because if TIME_UTC is
defined, then most likely timespec_get() is too. This isn't true in case
of __STDC_VERSION__ (see MSVC).
|
|
|
|
|
|
Fix exceptions for visualcpp
|
|
|
|
I modified the undefined frexpl in cygwin of make
|
|
|
|
|
|
Fix #2739 stack_extend in mrb_f_send
|
|
mrb_f_send needs stack_extend like OP_SEND
Signed-off-by: Go Saito <[email protected]>
|
|
Use ptrdiff_t to suppress signedness warning
|
|
3df32161797aa9c6e9df259e8d8571b454cb2333 says so but there is no warning
with GCC 4.9 on my Debian GNU/Linux environment.
|
|
delete prototypes of undefined functions
|
|
|
|
|
|
|
|
Fix a crash bug on raising after realloc
|
|
The following program reproduces this problem:
#include <mruby.h>
static mrb_value
recursive(mrb_state *mrb, mrb_value self)
{
mrb_int n;
mrb_get_args(mrb, "i", &n);
if (n == 0) {
mrb_raise(mrb, E_RUNTIME_ERROR, "XXX");
} else {
mrb_funcall(mrb, self, "recursive", 1, mrb_fixnum_value(n - 1));
}
return self;
}
int
main(void)
{
mrb_state *mrb;
mrb = mrb_open();
mrb_define_method(mrb, mrb->kernel_module, "recursive", recursive,
MRB_ARGS_REQ(1));
mrb_funcall(mrb, mrb_top_self(mrb), "recursive", 1, mrb_fixnum_value(30));
mrb_close(mrb);
}
Recursive method call isn't required. It's just for expanding call info
stack.
If mrb_realloc() is called in cipush(), cibase address is changed. So,
we shouldn't compare ci before mrb_realloc() and cibase after
mrb_realloc(). It accesses unknown address and causes crash.
|
|
Fix a bug that no expression case doesn't return valid value
|
|
Here is a script that reproduces this problem:
x = case
when true; 1
end
p x # => main # 1 is expected
|
|
Fix a bug that if and no return value case can't return true clause value
|
|
fix pointer dereference after realloc
|
|
Here is a script that reproduce this problem:
x = if true
1
else
case 2
when 3
end
4
end
p x # => nil # 1 is expected
|
|
In src/vm.c: mrb_funcall_with_block
stack_extend may realloc mrb->c->stbase, if argv points on mruby's stack,
then it points invalid address after stack_extend.
e.g. src/class.c: mrb_instance_new
This code:
```ruby
class A
def initialize(a0,a1,a2,a3,a4)
a0.is_a? Array
end
end
def f(a0,a1,a2,a3,a4)
A.new(a0,a1,a2,a3,a4)
f(a0,a1,a2,a3,a4)
end
f(0,1,2,3,4)
```
is expected to get exception
```
stack level too deep. (limit=(0x40000 - 128)) (SystemStackError)
```
but get segfault.
Signed-off-by: Go Saito <[email protected]>
|
|
|
|
|
|
|
|
|
|
re-implement mrb_float_to_str()
|
|
The new implementation is backwards incompatible, but I couldn't find
any usage outside mruby and I also couldn't think of a different and
good name.
All ISO C99 printf conversion specifiers for floating point numbers and
an optional precision are supported.
It is largely based on code from the MIT licensed musl libc
(http://www.musl-libc.org/) and its floating point printing is exact
(unlike the current code behind Float#to_s).
|
|
Make backtraces work again under DISABLE_STDIO
|
|
Add more debug flags for GCC based compilers
|
|
|