commit 033b424031b01c59fe59052112cd7228c27485f0
parent 613d7b543aa68a614b089b62be8a54375e7594ef
Author: Alexander Burger <abu@software-lab.de>
Date: Thu, 21 Apr 2011 14:39:08 +0200
Bug in 'replace': Crashed for an odd number of 'any' arguments
Diffstat:
M | CHANGES | | | 1 | + |
M | lib/tags | | | 102 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | src64/subr.l | | | 12 | ++++++++---- |
3 files changed, 60 insertions(+), 55 deletions(-)
diff --git a/CHANGES b/CHANGES
@@ -1,5 +1,6 @@
* XXjun11 picoLisp-3.0.7
64-bit version for PowerPC (ppc64)
+ Bug in 'replace' (64-bit)
Moved temporary directories to ~/.pil/tmp/
Moved line editor history to ~/.pil/history
diff --git a/lib/tags b/lib/tags
@@ -6,22 +6,22 @@ $ (2953 . "@src64/flow.l")
*/ (2446 . "@src64/big.l")
+ (2171 . "@src64/big.l")
- (2209 . "@src64/big.l")
--> (3909 . "@src64/subr.l")
+-> (3913 . "@src64/subr.l")
/ (2511 . "@src64/big.l")
: (2896 . "@src64/sym.l")
:: (2920 . "@src64/sym.l")
; (2822 . "@src64/sym.l")
-< (2203 . "@src64/subr.l")
-<= (2233 . "@src64/subr.l")
-<> (2140 . "@src64/subr.l")
-= (2111 . "@src64/subr.l")
-=0 (2169 . "@src64/subr.l")
+< (2207 . "@src64/subr.l")
+<= (2237 . "@src64/subr.l")
+<> (2144 . "@src64/subr.l")
+= (2115 . "@src64/subr.l")
+=0 (2173 . "@src64/subr.l")
=: (2851 . "@src64/sym.l")
-== (2055 . "@src64/subr.l")
+== (2059 . "@src64/subr.l")
==== (965 . "@src64/sym.l")
-=T (2177 . "@src64/subr.l")
-> (2263 . "@src64/subr.l")
->= (2293 . "@src64/subr.l")
+=T (2181 . "@src64/subr.l")
+> (2267 . "@src64/subr.l")
+>= (2297 . "@src64/subr.l")
>> (2625 . "@src64/big.l")
abs (2729 . "@src64/big.l")
accept (139 . "@src64/net.l")
@@ -36,10 +36,10 @@ arg (2267 . "@src64/main.l")
args (2243 . "@src64/main.l")
argv (2887 . "@src64/main.l")
as (144 . "@src64/flow.l")
-asoq (3001 . "@src64/subr.l")
-assoc (2966 . "@src64/subr.l")
+asoq (3005 . "@src64/subr.l")
+assoc (2970 . "@src64/subr.l")
at (2101 . "@src64/flow.l")
-atom (2381 . "@src64/subr.l")
+atom (2385 . "@src64/subr.l")
bind (1354 . "@src64/flow.l")
bit? (2746 . "@src64/big.l")
bool (1716 . "@src64/flow.l")
@@ -85,8 +85,8 @@ chain (1141 . "@src64/subr.l")
char (3415 . "@src64/io.l")
chop (1091 . "@src64/sym.l")
circ (816 . "@src64/subr.l")
-circ? (2398 . "@src64/subr.l")
-clip (1795 . "@src64/subr.l")
+circ? (2402 . "@src64/subr.l")
+clip (1799 . "@src64/subr.l")
close (4338 . "@src64/io.l")
cmd (2869 . "@src64/main.l")
cnt (1413 . "@src64/apply.l")
@@ -110,7 +110,7 @@ default (1659 . "@src64/sym.l")
del (1850 . "@src64/sym.l")
delete (1401 . "@src64/subr.l")
delq (1452 . "@src64/subr.l")
-diff (2585 . "@src64/subr.l")
+diff (2589 . "@src64/subr.l")
dir (2800 . "@src64/main.l")
dm (541 . "@src64/flow.l")
do (2133 . "@src64/flow.l")
@@ -129,14 +129,14 @@ extra (1259 . "@src64/flow.l")
extract (1218 . "@src64/apply.l")
fifo (1961 . "@src64/sym.l")
file (2747 . "@src64/main.l")
-fill (3236 . "@src64/subr.l")
+fill (3240 . "@src64/subr.l")
filter (1161 . "@src64/apply.l")
-fin (2029 . "@src64/subr.l")
+fin (2033 . "@src64/subr.l")
finally (2516 . "@src64/flow.l")
find (1322 . "@src64/apply.l")
fish (1613 . "@src64/apply.l")
-flg? (2441 . "@src64/subr.l")
-flip (1695 . "@src64/subr.l")
+flg? (2445 . "@src64/subr.l")
+flip (1699 . "@src64/subr.l")
flush (5074 . "@src64/io.l")
fold (3341 . "@src64/sym.l")
for (2222 . "@src64/flow.l")
@@ -153,7 +153,7 @@ getd (740 . "@src64/sym.l")
getl (3030 . "@src64/sym.l")
glue (1232 . "@src64/sym.l")
gt0 (2716 . "@src64/big.l")
-head (1816 . "@src64/subr.l")
+head (1820 . "@src64/subr.l")
heap (531 . "@src64/main.l")
hear (3196 . "@src64/io.l")
host (184 . "@src64/net.l")
@@ -164,7 +164,7 @@ if2 (1816 . "@src64/flow.l")
ifn (1857 . "@src64/flow.l")
in (4156 . "@src64/io.l")
inc (2256 . "@src64/big.l")
-index (2633 . "@src64/subr.l")
+index (2637 . "@src64/subr.l")
info (2704 . "@src64/main.l")
intern (873 . "@src64/sym.l")
ipid (3201 . "@src64/flow.l")
@@ -173,9 +173,9 @@ job (1421 . "@src64/flow.l")
journal (968 . "@src64/db.l")
key (3344 . "@src64/io.l")
kill (3233 . "@src64/flow.l")
-last (2040 . "@src64/subr.l")
+last (2044 . "@src64/subr.l")
le0 (2691 . "@src64/big.l")
-length (2737 . "@src64/subr.l")
+length (2741 . "@src64/subr.l")
let (1471 . "@src64/flow.l")
let? (1532 . "@src64/flow.l")
lieu (1154 . "@src64/db.l")
@@ -191,7 +191,7 @@ lock (1182 . "@src64/db.l")
loop (2165 . "@src64/flow.l")
low? (3213 . "@src64/sym.l")
lowc (3243 . "@src64/sym.l")
-lst? (2411 . "@src64/subr.l")
+lst? (2415 . "@src64/subr.l")
lt0 (2680 . "@src64/big.l")
lup (2224 . "@src64/sym.l")
made (1107 . "@src64/subr.l")
@@ -204,21 +204,21 @@ mapcon (1041 . "@src64/apply.l")
maplist (933 . "@src64/apply.l")
maps (790 . "@src64/apply.l")
mark (1963 . "@src64/db.l")
-match (3121 . "@src64/subr.l")
-max (2323 . "@src64/subr.l")
+match (3125 . "@src64/subr.l")
+max (2327 . "@src64/subr.l")
maxi (1511 . "@src64/apply.l")
-member (2451 . "@src64/subr.l")
-memq (2473 . "@src64/subr.l")
+member (2455 . "@src64/subr.l")
+memq (2477 . "@src64/subr.l")
meta (3133 . "@src64/sym.l")
meth (1084 . "@src64/flow.l")
method (1048 . "@src64/flow.l")
-min (2352 . "@src64/subr.l")
+min (2356 . "@src64/subr.l")
mini (1562 . "@src64/apply.l")
mix (1260 . "@src64/subr.l")
-mmeq (2501 . "@src64/subr.l")
-n0 (2185 . "@src64/subr.l")
-n== (2083 . "@src64/subr.l")
-nT (2194 . "@src64/subr.l")
+mmeq (2505 . "@src64/subr.l")
+n0 (2189 . "@src64/subr.l")
+n== (2087 . "@src64/subr.l")
+nT (2198 . "@src64/subr.l")
name (497 . "@src64/sym.l")
nand (1651 . "@src64/flow.l")
native (1387 . "@src64/main.l")
@@ -230,9 +230,9 @@ nond (1934 . "@src64/flow.l")
nor (1672 . "@src64/flow.l")
not (1724 . "@src64/flow.l")
nth (685 . "@src64/subr.l")
-num? (2422 . "@src64/subr.l")
+num? (2426 . "@src64/subr.l")
off (1596 . "@src64/sym.l")
-offset (2673 . "@src64/subr.l")
+offset (2677 . "@src64/subr.l")
on (1581 . "@src64/sym.l")
onOff (1611 . "@src64/sym.l")
one (1644 . "@src64/sym.l")
@@ -242,7 +242,7 @@ opt (2990 . "@src64/main.l")
or (1632 . "@src64/flow.l")
out (4176 . "@src64/io.l")
pack (1142 . "@src64/sym.l")
-pair (2390 . "@src64/subr.l")
+pair (2394 . "@src64/subr.l")
pass (754 . "@src64/apply.l")
pat? (718 . "@src64/sym.l")
path (1237 . "@src64/io.l")
@@ -260,13 +260,13 @@ prinl (5012 . "@src64/io.l")
print (5038 . "@src64/io.l")
println (5069 . "@src64/io.l")
printsp (5054 . "@src64/io.l")
-prior (2709 . "@src64/subr.l")
+prior (2713 . "@src64/subr.l")
prog (1752 . "@src64/flow.l")
prog1 (1760 . "@src64/flow.l")
prog2 (1777 . "@src64/flow.l")
prop (2779 . "@src64/sym.l")
protect (521 . "@src64/main.l")
-prove (3523 . "@src64/subr.l")
+prove (3527 . "@src64/subr.l")
push (1686 . "@src64/sym.l")
push1 (1722 . "@src64/sym.l")
put (2696 . "@src64/sym.l")
@@ -277,18 +277,18 @@ quit (1094 . "@src64/main.l")
quote (139 . "@src64/flow.l")
rand (2973 . "@src64/big.l")
range (997 . "@src64/subr.l")
-rank (3029 . "@src64/subr.l")
+rank (3033 . "@src64/subr.l")
raw (454 . "@src64/main.l")
rd (5116 . "@src64/io.l")
read (2624 . "@src64/io.l")
replace (1499 . "@src64/subr.l")
rest (2296 . "@src64/main.l")
-reverse (1674 . "@src64/subr.l")
+reverse (1678 . "@src64/subr.l")
rewind (5082 . "@src64/io.l")
rollback (1888 . "@src64/db.l")
rot (848 . "@src64/subr.l")
run (311 . "@src64/flow.l")
-sect (2537 . "@src64/subr.l")
+sect (2541 . "@src64/subr.l")
seed (2958 . "@src64/big.l")
seek (1275 . "@src64/apply.l")
send (1128 . "@src64/flow.l")
@@ -296,27 +296,27 @@ seq (1081 . "@src64/db.l")
set (1480 . "@src64/sym.l")
setq (1513 . "@src64/sym.l")
sigio (492 . "@src64/main.l")
-size (2802 . "@src64/subr.l")
+size (2806 . "@src64/subr.l")
skip (3469 . "@src64/io.l")
-sort (3958 . "@src64/subr.l")
+sort (3962 . "@src64/subr.l")
sp? (709 . "@src64/sym.l")
space (5016 . "@src64/io.l")
-split (1588 . "@src64/subr.l")
+split (1592 . "@src64/subr.l")
stack (560 . "@src64/main.l")
state (2001 . "@src64/flow.l")
-stem (1985 . "@src64/subr.l")
+stem (1989 . "@src64/subr.l")
str (3987 . "@src64/io.l")
str? (1011 . "@src64/sym.l")
-strip (1572 . "@src64/subr.l")
+strip (1576 . "@src64/subr.l")
sub? (1442 . "@src64/sym.l")
sum (1460 . "@src64/apply.l")
super (1215 . "@src64/flow.l")
sym (3973 . "@src64/io.l")
-sym? (2430 . "@src64/subr.l")
+sym? (2434 . "@src64/subr.l")
sync (3156 . "@src64/io.l")
sys (3053 . "@src64/flow.l")
t (1743 . "@src64/flow.l")
-tail (1907 . "@src64/subr.l")
+tail (1911 . "@src64/subr.l")
tell (3228 . "@src64/io.l")
text (1270 . "@src64/sym.l")
throw (2485 . "@src64/flow.l")
@@ -324,11 +324,11 @@ tick (3169 . "@src64/flow.l")
till (3578 . "@src64/io.l")
time (2514 . "@src64/main.l")
touch (1047 . "@src64/sym.l")
-trim (1755 . "@src64/subr.l")
+trim (1759 . "@src64/subr.l")
try (1169 . "@src64/flow.l")
type (909 . "@src64/flow.l")
udp (268 . "@src64/net.l")
-unify (3931 . "@src64/subr.l")
+unify (3935 . "@src64/subr.l")
unless (1893 . "@src64/flow.l")
until (2077 . "@src64/flow.l")
up (702 . "@src64/main.l")
diff --git a/src64/subr.l b/src64/subr.l
@@ -1,4 +1,4 @@
-# 03mar11abu
+# 21apr11abu
# (c) Software Lab. Alexander Burger
# (car 'var) -> any
@@ -1512,13 +1512,17 @@
ld X (X CDR) # 'anyN' args?
atom X
while z # Yes
- ld E (X) # Eval next arg
+ ld E (X) # Eval next two args
eval+
- push E # and save it
+ push E # Save first
+ ld X (X CDR)
+ ld E (X) # Eval second
+ eval+
+ push E # Save second
loop
ld X L # X above 'any1'
- lea C (S -I) # C on end of 'any' items
link
+ ld C S # C below end of 'any' items
call cons_Z # Build first result cell
do
sub X II # Try next 'any' pair