commit 4beccd39d13c030c788334349728bf5c60642c36
parent 619bd3ea0951c202cadcb71f63d0d09b68b62374
Author: Commit-Bot <unknown>
Date: Wed, 15 Sep 2010 17:57:15 +0000
Automatic commit from picoLisp.tgz, From: Wed, 15 Sep 2010 17:57:15 GMT
Diffstat:
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/lib/tags b/lib/tags
@@ -46,7 +46,7 @@ bool (1743 . "@src64/flow.l")
box (841 . "@src64/flow.l")
box? (999 . "@src64/sym.l")
by (1553 . "@src64/apply.l")
-bye (3451 . "@src64/flow.l")
+bye (3450 . "@src64/flow.l")
caaaar (271 . "@src64/subr.l")
caaadr (288 . "@src64/subr.l")
caaar (99 . "@src64/subr.l")
diff --git a/src64/flow.l b/src64/flow.l
@@ -1,4 +1,4 @@
-# 13sep10abu
+# 15sep10abu
# (c) Software Lab. Alexander Burger
(code 'redefMsgEC)
@@ -3299,12 +3299,11 @@
ld4 (SpMiPipe 4) # Write end
call closeOnExecAX
end
- push A # Create 'tell' pipe
- cc pipe(S) # Open 'tell' pipe
+ sub S II # Create 'hear' and 'tell' pipes
+ cc pipe(S) # Open 'hear' pipe
nul4 # OK?
jnz pipeErrX
- push A # Create 'hear' pipe
- cc pipe(S) # Open 'hear' pipe
+ cc pipe(&(S 8)) # Open 'tell' pipe
nul4 # OK?
jnz pipeErrX
ld4 (S) # Read end of 'hear'
@@ -3406,14 +3405,14 @@
ld E (Fork) # Run '*Fork'
call execE
ld (Fork) Nil # Clear '*Fork'
- pop A # Drop 'hear' and 'tell' pipes
- pop A
+ add S II # Drop 'hear' and 'tell' pipes
setc # Return "in child"
ret
end
- push A # Save child's 'pid'
cmp C (Children) # Children table full?
+ ldnz E A # No: Get 'pid' into E
if eq # Yes
+ push A # Save child's 'pid'
ld A (Child) # Get vector
ld E C # Children
add E (* 8 VI) # Eight more slots
@@ -3427,9 +3426,10 @@
ld (A) 0 # Clear 'pid'
dec E # Done?
until z # Yes
+ pop E # Get 'pid'
end
add C (Child) # Point C to free 'child' entry
- pop (C) # Set 'pid'
+ ld (C) E # Set 'pid'
ld4 (S) # Close read end of 'hear'
call closeAX
ld4 (S 4) # Write end of 'hear'
@@ -3442,8 +3442,7 @@
ld (C III) 0 # Init buffer offset
ld (C IV) 0 # buffer count
ld (C V) 0 # No buffer yet
- pop A # Drop 'hear' and 'tell' pipes
- pop A
+ add S II # Drop 'hear' and 'tell' pipes
clrc # Return "in parent"
ret