From 620b199aced8417afc505ca559f1ab9d976b9621 Mon Sep 17 00:00:00 2001 From: deadwood Date: Tue, 2 Jul 2013 18:47:19 +0000 Subject: [PATCH] arosc.library - restore parent flags upon exiting from "pretend child" state git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@47621 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- compiler/clib/__vfork.c | 4 ++++ compiler/clib/__vfork.h | 1 + 2 files changed, 5 insertions(+) diff --git a/compiler/clib/__vfork.c b/compiler/clib/__vfork.c index 255c981d6b..b45434b98c 100644 --- a/compiler/clib/__vfork.c +++ b/compiler/clib/__vfork.c @@ -345,6 +345,7 @@ static void parent_enterpretendchild(struct vfork_data *udata) udata->parent_curdir = CurrentDir(((struct Process *) udata->child)->pr_CurrentDir); /* Pretend to be running as the child created by vfork */ + udata->parent_flags = aroscbase->acb_flags; aroscbase->acb_flags |= PRETEND_CHILD; D(bug("parent_enterpretendchild: leaving\n")); @@ -386,7 +387,10 @@ static void parent_leavepretendchild(struct vfork_data *udata) /* Switch to previous vfork_data */ aroscbase->acb_vfork_data = udata->prev; if (aroscbase->acb_vfork_data == NULL) + { + aroscbase->acb_flags = udata->parent_flags; aroscbase->acb_flags &= ~PRETEND_CHILD; + } D(bug("parent_leavepretendchild: leaving\n")); } diff --git a/compiler/clib/__vfork.h b/compiler/clib/__vfork.h index 6969aed98b..5266135519 100644 --- a/compiler/clib/__vfork.h +++ b/compiler/clib/__vfork.h @@ -33,6 +33,7 @@ struct vfork_data APTR parent_internalpool; int parent_numslots; fdesc **parent_fd_array; + int parent_flags; ULONG child_id; struct Task *child; -- 2.11.4.GIT