cosmoV_throw() now resets the vm stack as well

also a minor GC bug in cosmoO_newError was fixed.

i'm going to try to phase out cosmoM_freezeGC & friends
since that would cause hell with this new
error handling solution. the only thing still using it is the GC.
This commit is contained in:
2023-08-29 16:48:38 -05:00
committed by cpunch
parent 7fa7eb8d94
commit 6126b50941
6 changed files with 14 additions and 15 deletions

View File

@@ -10,6 +10,8 @@
CPanic *cosmoV_newPanic(CState *state)
{
CPanic *panic = cosmoM_xmalloc(state, sizeof(CPanic));
panic->top = state->top;
panic->frameCount = state->frameCount;
panic->prev = state->panic;
state->panic = panic;
@@ -95,7 +97,6 @@ void cosmoV_freeState(CState *state)
#ifdef GC_DEBUG
printf("state %p is being free'd!\n", state);
#endif
cosmoM_freezeGC(state);
// frees all the objects
CObj *objs = state->objects;