X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isam%2Fphysical.c;h=65bfe19023ba42120117b4a652de24fca858aa8d;hb=49f1c8c877affdeb9e9221047c48beed3f475afb;hp=ce4526fea319d7482b687f30589c8256b1e9a861;hpb=b8d492961ba89859e02543581d097b75a59b546c;p=idzebra-moved-to-github.git diff --git a/isam/physical.c b/isam/physical.c index ce4526f..65bfe19 100644 --- a/isam/physical.c +++ b/isam/physical.c @@ -1,10 +1,28 @@ /* - * Copyright (C) 1994, Index Data I/S + * Copyright (C) 1994-1999, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: physical.c,v $ - * Revision 1.11 1996-03-20 13:29:17 quinn + * Revision 1.17 1999-11-30 13:48:04 adam + * Improved installation. Updated for inclusion of YAZ header files. + * + * Revision 1.16 1999/05/26 07:49:14 adam + * C++ compilation. + * + * Revision 1.15 1999/02/02 14:51:22 adam + * Updated WIN32 code specific sections. Changed header. + * + * Revision 1.14 1997/09/09 13:38:12 adam + * Partial port to WIN95/NT. + * + * Revision 1.13 1996/10/29 13:56:57 adam + * Include of zebrautl.h instead of alexutil.h. + * + * Revision 1.12 1996/03/20 16:17:11 quinn + * Bug hunting + * + * Revision 1.11 1996/03/20 13:29:17 quinn * Bug-fix * * Revision 1.10 1996/03/19 19:22:44 quinn @@ -46,7 +64,9 @@ #include #include +#include +#include #include static int is_freestore_alloc(ISAM is, int type) @@ -109,6 +129,7 @@ int is_p_read_partial(is_mtable *tab, is_mblock *block) /* extract header info */ buf->offset = 0; memcpy(&block->num_records, buf->data, sizeof(block->num_records)); + assert(block->num_records > 0); buf->offset += sizeof(block->num_records); memcpy(&block->nextpos, buf->data + buf->offset, sizeof(block->nextpos)); @@ -215,6 +236,7 @@ void is_p_sync(is_mtable *tab) } logf (LOG_DEBUG, "W: Block #%d contains %d records.", p->diskpos, p->num_records); + assert(p->num_records > 0); for (b = p->data; b; b = b->next) { logf(LOG_DEBUG, " buf: offset %d, keys %d, type %d, ref %d", @@ -252,7 +274,7 @@ void is_p_unmap(is_mtable *tab) static is_mbuf *mbuf_takehead(is_mbuf **mb, int *num, int keysize) { - is_mbuf *p = 0, **pp = &p, *new; + is_mbuf *p = 0, **pp = &p, *inew; int toget = *num; if (!toget) @@ -267,13 +289,13 @@ static is_mbuf *mbuf_takehead(is_mbuf **mb, int *num, int keysize) } if (toget > 0 && *mb) { - new = xmalloc_mbuf(IS_MBUF_TYPE_SMALL); - new->next = (*mb)->next; - (*mb)->next = new; - new->data = (*mb)->data; + inew = xmalloc_mbuf(IS_MBUF_TYPE_SMALL); + inew->next = (*mb)->next; + (*mb)->next = inew; + inew->data = (*mb)->data; (*mb)->refcount++; - new->offset = (*mb)->offset + toget * keysize; - new->num = (*mb)->num - toget; + inew->offset = (*mb)->offset + toget * keysize; + inew->num = (*mb)->num - toget; (*mb)->num = toget; *pp = *mb; *mb = (*mb)->next; @@ -291,7 +313,7 @@ static is_mbuf *mbuf_takehead(is_mbuf **mb, int *num, int keysize) */ void is_p_align(is_mtable *tab) { - is_mblock *mblock, *new, *last = 0, *next; + is_mblock *mblock, *inew, *last = 0, *next; is_mbuf *mbufs, *mbp; int blocks, recsblock; @@ -354,11 +376,11 @@ void is_p_align(is_mtable *tab) { if (mbufs) { - new = xmalloc_mblock(); - new->diskpos = -1; - new->state = IS_MBSTATE_DIRTY; - new->next = mblock->next; - mblock->next = new; + inew = xmalloc_mblock(); + inew->diskpos = -1; + inew->state = IS_MBSTATE_DIRTY; + inew->next = mblock->next; + mblock->next = inew; } mblock->data = mbp; mblock->num_records = recsblock;