diff --git a/C/heapgc.c b/C/heapgc.c index 6159b19d6..8cec0ac7f 100644 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -467,7 +467,7 @@ push_registers(Int num_regs, yamop *nextop USES_REGS) ( (*curslot < (CELL)LOCAL_GlobalBase && *curslot > (CELL)HR))) { - *curslot++ = TermNil; + *curslot++ = TermFreeTerm; } TrailTerm(TR++) = (CELL)curslot++; } diff --git a/CXX/yapt.hh b/CXX/yapt.hh index b375743be..8a2b52931 100644 --- a/CXX/yapt.hh +++ b/CXX/yapt.hh @@ -22,7 +22,10 @@ protected: void mk(Term t0); /// internal method to convert from term to handle Term gt(); /// get handle and obtain term public: - virtual ~YAPTerm(){}; + virtual ~YAPTerm(){ LOCAL_HandleBase[t] = TermFreeTerm; + while ( LOCAL_HandleBase[LOCAL_CurSlot-1] == TermFreeTerm) + LOCAL_CurSlot--; + } YAPTerm(Term tn) { mk(tn); } /// private method to convert from Term (internal YAP representation) to diff --git a/packages/python/python.c b/packages/python/python.c index cdc8efe86..b86f075b3 100644 --- a/packages/python/python.c +++ b/packages/python/python.c @@ -93,7 +93,7 @@ X_API bool init_python(void) { // wait for YAP_Init return false; } - PyGILState_STATE gstate = PyGILState_Ensure(); + // PyGILState_STATE gstate = PyGILState_Ensure(); term_t t = PL_new_term_ref(); if (!Py_IsInitialized()) { python_in_python = true; @@ -112,6 +112,6 @@ X_API bool init_python(void) { PL_reset_term_refs(t); install_pypreds(); install_pl2pl(); - PyGILState_Release(gstate); + //PyGILState_Release(gstate); return !python_in_python; }