From: Tilman Sauerbeck Date: Fri, 3 Dec 2004 13:45:00 +0000 (+0000) Subject: Call Init_stack() just before the Animator's callback is executed. X-Git-Url: http://git.code-monkey.de/?p=ruby-ecore.git;a=commitdiff_plain;h=27ce69a27f789d34afdd7c4423c0535999393c64 Call Init_stack() just before the Animator's callback is executed. --- diff --git a/src/ecore/rb_animator.c b/src/ecore/rb_animator.c index 6544baa..41837de 100644 --- a/src/ecore/rb_animator.c +++ b/src/ecore/rb_animator.c @@ -1,5 +1,5 @@ /* - * $Id: rb_animator.c 146 2004-11-27 15:38:52Z tilman $ + * $Id: rb_animator.c 150 2004-12-03 13:45:00Z tilman $ * * Copyright (C) 2004 ruby-ecore team (see AUTHORS) * @@ -25,6 +25,8 @@ #include "rb_ecore.h" +void Init_stack (VALUE *addr); + typedef struct { Ecore_Animator *real; VALUE callback; @@ -35,6 +37,15 @@ static int on_animator (void *data) { VALUE r; RbAnimator *animator = data; + static bool initted; + + /* this fixes a weird segfault that occured when the animator's + * callback was called from a Ecore::Timer callback. + */ + if (!initted) { + Init_stack (0); + initted = true; + } r = rb_funcall (animator->callback, rb_intern ("call"), 0);