diff --git a/src/object.c b/src/object.c index 6413ef5ad83d8421caa48b3f329bf25e52ab63d8..ed9d739ea9727a041312fc333404863d7fe0881f 100644 --- a/src/object.c +++ b/src/object.c @@ -836,17 +836,21 @@ PMOD_EXPORT void destruct_object (struct object *o, enum object_destruct_reason struct program *p; struct pike_frame *pike_frame=0; int frame_pushed = 0, destroy_called = 0; +#ifdef PIKE_THREADS int inhibit_mask = ~THREAD_FLAG_INHIBIT | (Pike_interpreter.thread_state? (Pike_interpreter.thread_state->flags & THREAD_FLAG_INHIBIT):0); +#endif #ifdef PIKE_DEBUG ONERROR uwp; #endif +#ifdef PIKE_THREADS if (Pike_interpreter.thread_state) { /* Make sure we don't exit due to signals before we're done. */ Pike_interpreter.thread_state->flags |= THREAD_FLAG_INHIBIT; } +#endif #ifdef PIKE_DEBUG fatal_check_c_stack(8192); @@ -875,9 +879,11 @@ PMOD_EXPORT void destruct_object (struct object *o, enum object_destruct_reason #ifdef PIKE_DEBUG UNSET_ONERROR(uwp); #endif +#ifdef PIKE_THREADS if (Pike_interpreter.thread_state) { Pike_interpreter.thread_state->flags &= inhibit_mask; } +#endif return; } add_ref( o ); @@ -891,9 +897,11 @@ PMOD_EXPORT void destruct_object (struct object *o, enum object_destruct_reason #ifdef PIKE_DEBUG UNSET_ONERROR(uwp); #endif +#ifdef PIKE_THREADS if (Pike_interpreter.thread_state) { Pike_interpreter.thread_state->flags &= inhibit_mask; - } + } +#endif return; } destroy_called = 1; @@ -1006,9 +1014,11 @@ PMOD_EXPORT void destruct_object (struct object *o, enum object_destruct_reason if( destroy_called ) remove_destroy_called_mark(o); +#ifdef PIKE_THREADS if (Pike_interpreter.thread_state) { Pike_interpreter.thread_state->flags &= inhibit_mask; } +#endif #ifdef PIKE_DEBUG UNSET_ONERROR(uwp); #endif