This could be triggered with with the JIT and a simple test case like this:
p := [3 factorial] newProcess. p singleStep. p suspend. self assert: p isSuspended 2014-01-09 Holger Hans Peter Freyther <[email protected]> * interp.c: Check if the process is already suspended. --- libgst/ChangeLog | 4 ++++ libgst/interp.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libgst/ChangeLog b/libgst/ChangeLog index 6e48372..954b58f 100644 --- a/libgst/ChangeLog +++ b/libgst/ChangeLog @@ -1,3 +1,7 @@ +2014-01-09 Holger Hans Peter Freyther <[email protected]> + + * interp.c: Check if the process is already suspended. + 2013-12-22 Holger Hans Peter Freyther <[email protected]> * comp.c: Only flush the cache once when adding a new diff --git a/libgst/interp.c b/libgst/interp.c index 0a01361..ab67daf 100644 --- a/libgst/interp.c +++ b/libgst/interp.c @@ -1794,7 +1794,8 @@ resume_process (OOP processOOP, { /* We're resuming a process with a *equal or higher* priority, so sleep the current one and activate the new one */ - sleep_process (activeOOP); + if (active->myList != _gst_nil_oop) + sleep_process (activeOOP); activate_process (processOOP); } else -- 1.8.5.2 _______________________________________________ help-smalltalk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-smalltalk
