commit 3156d8484ed0013a520b5a30466d75ee14cda865
parent a8d83f4fa8e13e42524eb87cd4c7c315503ed118
Author: Alexander Burger <abu@software-lab.de>
Date: Fri, 22 Feb 2013 10:30:30 +0100
Journal for 'dbck' free list disabled
Diffstat:
5 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/ersatz/picolisp.jar b/ersatz/picolisp.jar
Binary files differ.
diff --git a/src/io.c b/src/io.c
@@ -1,4 +1,4 @@
-/* 31jan13abu
+/* 22feb13abu
* (c) Software Lab. Alexander Burger
*/
@@ -3564,6 +3564,7 @@ any doDbck(any ex) {
any x, y;
bool flg;
int i;
+ FILE *jnl = Jnl;
adr next, p, cnt;
word2 blks, syms;
byte buf[2*BLK];
@@ -3592,7 +3593,9 @@ any doDbck(any ex) {
x = mkStr("Circular free list");
goto done;
}
+ Jnl = NULL;
Block[0] |= TAGMASK, wrBlock(); // Mark free list
+ Jnl = jnl;
}
for (p = BLKSIZE; p != next; p += BLKSIZE) { // Check all chains
if (rdBlock(p), (Block[0] & TAGMASK) == 0) {
@@ -3619,8 +3622,11 @@ any doDbck(any ex) {
BlkLink = getAdr(buf); // Unmark free list
while (BlkLink) {
rdBlock(BlkLink);
- if (Block[0] & TAGMASK)
+ if (Block[0] & TAGMASK) {
+ Jnl = NULL;
Block[0] &= BLKMASK, wrBlock();
+ Jnl = jnl;
+ }
}
if (cnt != next)
x = mkStr("Bad count");
diff --git a/src/vers.h b/src/vers.h
@@ -1 +1 @@
-static byte Version[4] = {3,1,1,13};
+static byte Version[4] = {3,1,1,14};
diff --git a/src64/db.l b/src64/db.l
@@ -1,4 +1,4 @@
-# 28dec12abu
+# 22feb13abu
# (c) Software Lab. Alexander Burger
# 6 bytes in little endian format
@@ -2068,9 +2068,12 @@
call mkStrE_E # Return message
jmp 90
end
+ push (DbJnl) # Disable Journal
+ ld (DbJnl) 0
ld Z (DbBlock) # Block buffer in Z again
or (Z) BLKTAG # Mark free list
call wrBlockZ # Write block
+ pop (DbJnl) # Restore Journal
loop
ld X BLKSIZE # 'p' in X
do # Check all chains
@@ -2135,8 +2138,11 @@
ld B (Z) # Get tag byte
and B BLKTAG # Block tag non-zero?
if nz # Nes
+ push (DbJnl) # Disable Journal
+ ld (DbJnl) 0
off (Z) BLKTAG # Clear tag
call wrBlockZ # Write block
+ pop (DbJnl) # Restore Journal
end
ld A (BlkLink) # Get next block
loop
diff --git a/src64/version.l b/src64/version.l
@@ -1,6 +1,6 @@
-# 19feb13abu
+# 22feb13abu
# (c) Software Lab. Alexander Burger
-(de *Version 3 1 1 13)
+(de *Version 3 1 1 14)
# vi:et:ts=3:sw=3