X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=isamb%2Fisamb.c;h=72bb842cc1ce2a02a9c8eedc80a6a91db6feefda;hb=83bf26c44f20a65c1a07e1fcb59649540a3c2193;hp=57ebb84093b32eb3d9391d0160df64ecf9d33004;hpb=e505b6cf2a7f6821264d82cd2e8869b2be38d0b2;p=idzebra-moved-to-github.git diff --git a/isamb/isamb.c b/isamb/isamb.c index 57ebb84..72bb842 100644 --- a/isamb/isamb.c +++ b/isamb/isamb.c @@ -1,5 +1,5 @@ -/* $Id: isamb.c,v 1.60 2004-11-29 21:53:00 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 +/* $Id: isamb.c,v 1.63 2005-01-02 18:50:53 adam Exp $ + Copyright (C) 1995-2005 Index Data Aps This file is part of the Zebra server. @@ -21,9 +21,9 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA */ #include +#include #include -#include -#include +#include #include #ifndef ISAMB_DEBUG @@ -205,10 +205,14 @@ ISAMB isamb_open (BFiles bfs, const char *name, int writeflag, ISAMC_M *method, isamb->file[i].head.first_block = ISAMB_CACHE_ENTRY_SIZE/b_size+1; isamb->file[i].head.last_block = isamb->file[i].head.first_block; isamb->file[i].head.block_size = b_size; +#if ISAMB_PTR_CODEC if (i == isamb->no_cat-1 || b_size > 128) isamb->file[i].head.block_offset = 8; else isamb->file[i].head.block_offset = 4; +#else + isamb->file[i].head.block_offset = 11; +#endif isamb->file[i].head.block_max = b_size - isamb->file[i].head.block_offset; isamb->file[i].head.free_list = 0; @@ -1129,6 +1133,8 @@ ISAMB_PP isamb_pp_open_x (ISAMB isamb, ISAMB_P pos, int *level, int scope) ISAMB_PP pp = xmalloc (sizeof(*pp)); int i; + assert(pos); + pp->isamb = isamb; pp->block = xmalloc (ISAMB_MAX_LEVEL * sizeof(*pp->block)); @@ -1152,8 +1158,6 @@ ISAMB_PP isamb_pp_open_x (ISAMB isamb, ISAMB_P pos, int *level, int scope) pp->no_blocks++; if (p->leaf) break; - - decode_ptr (&src, &pos); p->offset = src - p->bytes; pp->level++;