| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Coverity: fix dangling pointer
|
|
fix androideabi cross-compile error : undefined reference to 'frexpl'
|
|
|
|
|
|
CID 75872 (#3-2 of 3): Pointer to local outside scope (RETURN_LOCAL)
38. use_invalid: Using p, which points to an out-of-scope variable buf.
|
|
|
|
src/print.c: rewrite printstr() to get rid of code duplication
|
|
|
|
mrb_proc_new_cfunc_with_env() allocates RProc with RProc::env as NULL
then allocates REnv and sets it to RProc::env of the allocated RProc. If
incremental GC is ran before "allocates REnv and sets it to RProc::env
of the allocated RProc", the allocated RProc's GC status is
"marked" (Black) and the allocated REnv's GC status is
"unmarked" (White). The next incremental GC sweeps the allocated REnv
without re-marking the allocated RProc. Because the RProc is Black and
the REnv is White.
We need to implement write barrier for the case.
We can force to cause the above situation by the following patch:
diff --git a/src/proc.c b/src/proc.c
index f98998f..4f4e25c 100644
--- a/src/proc.c
+++ b/src/proc.c
@@ -92,6 +92,7 @@ mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t func, mrb_int argc, const
struct REnv *e;
int i;
+ mrb_incremental_gc(mrb);
p->env = e = env_new(mrb, argc);
MRB_ENV_UNSHARE_STACK(e);
e->stack = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * argc);
With this patch, "rake test" causes segmentation fault.
|
|
Dr Markus Kuhn published in 1999 an article [1] explaining in details
why we shouldn't use the ASCII grave accent (0x60) as a left quotation.
Backticks have been used most notably to produce nice-looking LaTeX
documents but it doesn't seem to be an issue on modern platforms and
for the oldest ones, there are workarounds as mentioned by Dr Kuhn.
[1]: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
|
|
|
|
|
|
|
|
Mrb string value cstr patch
|
|
|
|
|
|
|
|
|
|
|
|
|
|
From the CRuby 2.2.2 Proc#arity documentation:
If the block has optional arguments, returns -n-1, where n is the number
of mandatory arguments, with the exception for blocks that are not
lambdas and have only a finite number of optional arguments; in this
latter case, returns n.
|
|
[ci skip] Remove some Srting#split samples
|
|
mruby not support regexp, so remove these samples.
|
|
mrb_inspect() also calls mrb_obj_as_string() after #inspect to ensure
the mrb_value is a string.
|
|
MIPS of Linux platform is supported frexpl(3).
This fixes to use the frexpl that are provided with gcc if user wants to build
on MIPS of Linux platform.
Signe-doff-by: Nobuhiro Iwamatsu <[email protected]>
|
|
remove unnecessary mrb_immediate_p()
|
|
`!mrb_array_p(ary2)` and `mrb_type(obj) != MRB_TT_DATA` are sufficient.
|
|
|
|
Compiler codes is moved to "mruby-compiler".
Executable `mrbc` is moved to "mruby-bin-mrbc".
|
|
only generate gets of non-local vars in VAL mode
|
|
fix two potential cases of signed integer overflow
|
|
|
|
This fixes a crash for code like "#{@a;1}".
Unlike CRuby globals are excluded too since mruby doesn't implement
hooking.
|
|
|
|
|
|
The rest lhs variable has to be an empty array if rhs is an array with
less elements than pre + post lhs variables. The codegen generated
OP_ARRAY with an invalid length (such as 127 for *a, b = []) because rn
was negative.
|
|
|
|
check if outer is a class or module
|
|
For modules this check didn't exist yet. Also call #inspect.
|
|
It's just a copy of the code in the previous case (NODE_CALL).
|
|
fix capture group index bug
|
|
atoi() is used to convert the index to an int but the behavior is
undefined if the value can't be represented.
> $9999999999
00007 NODE_SCOPE:
00007 NODE_BEGIN:
00007 NODE_NTH_REF: $2147483647
irep 00630580 nregs=2 nlocals=1 pools=0 syms=1 reps=0
file: (mirb)
7 000 OP_GETGLOBAL R1 :$2147483647
7 001 OP_STOP
Call strtoul() instead as its behavior in such cases is defined and add
a simple range check.
Alternatively NODE_NTH_REF's cdr could be changed from int to mrb_sym
(like NODE_GVAR).
|
|
Not needed anymore since 85075bef7583edd0a48cfbdfaa632cbdacf78f2c
|
|
Related to #2760.
|
|
Move `mrb_codedump_all` to "src/codedump.c".
|
|
|
|
Related to #2760.
|