Yet another bug fix (next_block was initialized to 0; now set to 1).
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 12 Apr 1996 07:01:55 +0000 (07:01 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 12 Apr 1996 07:01:55 +0000 (07:01 +0000)
bfile/cfile.c
bfile/commit.c

index 7bbb8dc..0b829c5 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: cfile.c,v $
- * Revision 1.13  1996-04-09 14:48:49  adam
+ * Revision 1.14  1996-04-12 07:01:55  adam
+ * Yet another bug fix (next_block was initialized to 0; now set to 1).
+ *
+ * Revision 1.13  1996/04/09 14:48:49  adam
  * Bug fix: offset calculation when using flat files was completely broken.
  *
  * Revision 1.12  1996/04/09  06:47:28  adam
@@ -128,7 +131,7 @@ CFile cf_open (MFile mf, MFile_area area, const char *fname,
         hash_bytes = cf->head.hash_size * sizeof(int);
         cf->head.flat_bucket = cf->head.next_bucket = cf->head.first_bucket = 
             (hash_bytes+sizeof(cf->head))/HASH_BSIZE + 2;
-        cf->head.next_block = 0;
+        cf->head.next_block = 1;
         if (wflag)
             mf_write (cf->hash_mf, 0, 0, sizeof(cf->head), &cf->head);
         cf->array = xmalloc (hash_bytes);
@@ -324,6 +327,7 @@ static void cf_write_flat (CFile cf, int no, int vno)
     hno += cf->head.next_bucket;
     if (hno >= cf->head.flat_bucket)
         cf->head.flat_bucket = hno+1;
+    cf->dirty = 1;
     mf_write (cf->hash_mf, hno, off, sizeof(int), &vno);
 }
 
index 75b9604..45de7ff 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: commit.c,v $
- * Revision 1.8  1996-02-07 14:03:49  adam
+ * Revision 1.9  1996-04-12 07:01:57  adam
+ * Yet another bug fix (next_block was initialized to 0; now set to 1).
+ *
+ * Revision 1.8  1996/02/07 14:03:49  adam
  * Work on flat indexed shadow files.
  *
  * Revision 1.7  1996/02/07  10:08:46  adam
@@ -91,15 +94,27 @@ static void cf_commit_flat (CFile cf)
     fp = xmalloc (HASH_BSIZE);
     for (hno = cf->head.next_bucket; hno < cf->head.flat_bucket; hno++)
     {
-        mf_read (cf->hash_mf, hno, 0, 0, fp);
+        if (hno == cf->head.next_bucket || hno == cf->head.flat_bucket-1)
+        {
+            for (i = 0; i < (HASH_BSIZE/sizeof(int)); i++)
+                fp[i] = 0;
+        }
+        if (!mf_read (cf->hash_mf, hno, 0, 0, fp))
+        {
+            logf (LOG_WARN, "read index block hno=%d (%d-%d) commit",
+                             hno, cf->head.next_bucket,
+                             cf->head.flat_bucket-1);
+        }
         for (i = 0; i < (HASH_BSIZE/sizeof(int)); i++)
         {
             if (fp[i])
             {
                 if (!mf_read (cf->block_mf, fp[i], 0, 0, cf->iobuf))
                 {
-                    logf (LOG_FATAL, "read commit block at %d (->%d)",
-                          fp[i], vno);
+                    logf (LOG_FATAL, "read data block hno=%d (%d-%d) "
+                                     "i=%d commit block at %d (->%d)",
+                          hno, cf->head.next_bucket, cf->head.flat_bucket-1,
+                          i, fp[i], vno);
                     exit (1);
                 }
                 mf_write (cf->rmf, vno, 0, 0, cf->iobuf);