diff options
Diffstat (limited to 'ext/dl/sym.c')
-rw-r--r-- | ext/dl/sym.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/dl/sym.c b/ext/dl/sym.c index 996831bec2..5340dcb489 100644 --- a/ext/dl/sym.c +++ b/ext/dl/sym.c @@ -529,8 +529,10 @@ rb_dlsym_call(int argc, VALUE argv[], VALUE self) stack[5],stack[6],stack[7],stack[8],stack[9],\ stack[10],stack[11],stack[12],stack[13],stack[14] int stk_size; - long *stack, *sp; + long stack[15]; + long *sp; + sp = stack; stk_size = stack_size(sym); if( stk_size < 0 ){ FREE_ARGS; @@ -539,10 +541,7 @@ rb_dlsym_call(int argc, VALUE argv[], VALUE self) else if( stk_size > (int)(sizeof(long) * 15) ){ FREE_ARGS; rb_raise(rb_eArgError, "too many arguments."); - stk_size = sizeof(long) * 15; } - stack = (long*)alloca(stk_size); - sp = stack; #elif defined(USE_INLINE_ASM) #define DLSTACK_PROTO #define DLSTACK_ARGS |