diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-11-17 22:33:49 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-11-17 22:33:49 +0000 |
commit | 8368b124ab4f7c98d24eea43e775ac630d50c89b (patch) | |
tree | cada92125d8140ad5be6558ffba3be4fe3c8e421 | |
parent | 1379a13fa521e6f499eefa10ec3f430c2844f6d4 (diff) | |
download | netsurf-chris/newproc-scheduler.tar.gz |
Make a copy of nscallback for the new processchris/newproc-scheduler
-rwxr-xr-x | amiga/schedule.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/amiga/schedule.c b/amiga/schedule.c index 03c061402..fb30cbae9 100755 --- a/amiga/schedule.c +++ b/amiga/schedule.c @@ -212,6 +212,7 @@ static int32 ami_schedule_process(STRPTR args, int32 length, APTR execbase) callback = nscb->callback; p = nscb->p; + FreeVec(nscb); callback(p); @@ -222,7 +223,7 @@ static int32 ami_schedule_process(STRPTR args, int32 length, APTR execbase) /* exported function documented in amiga/schedule.h */ void schedule_run(BOOL poll) { - struct nscallback *nscb; + struct nscallback *nscb, *nscb2; void (*callback)(void *p); void *p; struct TimeVal tv; @@ -242,16 +243,20 @@ void schedule_run(BOOL poll) } if(nscb->callback == llcache_persist) { + + nscb2 = AllocVecTagList(sizeof(struct nscallback), NULL); + CopyMem(nscb, nscb2, sizeof(struct nscallback)); + LOG(("New process %p", nscb->callback)); CreateNewProcTags( NP_Entry, ami_schedule_process, NP_Child, TRUE, - NP_UserData, nscb, + NP_UserData, nscb2, TAG_DONE); ami_schedule_remove_timer_event(nscb); pblHeapRemoveFirst(schedule_list); -// FreeVec(nscb); + FreeVec(nscb); } else { callback = nscb->callback; p = nscb->p; |