[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gforth] Strange behavior in callbacks
From: |
Reepca Russelstein |
Subject: |
Re: [gforth] Strange behavior in callbacks |
Date: |
Wed, 14 Mar 2018 21:14:38 -0500 |
On Tue, Mar 13, 2018 at 11:59 AM, Reepca Russelstein
<address@hidden> wrote:
> Trying to get some c callbacks working and encountering some strange
> behavior...
>
> c-library genericCallback
> \c void genericCallback(void (*tocall)(void))
> \c {
> \c tocall();
> \c }
> c-function genericCallback genericCallback a -- void
> c-callback blankCallback -- void
> end-c-library
>
>
> :noname .s s" 1 2 + ." evaluate ; blankCallback genericCallback
>
>
> That produces
>
> <-21965655376>
> uncaught exception: Stack underflow
>
>
> I initially thought to have the signature of genericCallback be func
> -- void, but swig kept calling them addresses instead. Also it
> produced the same result.
>
> Looking at the generated wrapper code, I see that a new stackpointers
> variable is created and used. It seems that whatever stack checking is
> happening isn't taking this into account, coming to some incorrect
> conclusions instead.
>
> I came across this trying to evaluate input in glutIdleFunc so that I
> could keep making changes while the program is running. Any advice on
> how to make this use case work, that doesn't involve "just don't use
> glut" (I'd love to be able to take it...)?
>
> Thanks.
I should specify, I'm using the latest git from savannah.