X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=isam%2Fmemory.c;h=d7a327cd0cc4b342f00562942442809c0e32c15a;hb=f8ac116fa79dcbdaf11b9ae6f7eedf08b5d7a8ec;hp=cd90dcbd88ed5eb1844967ee6787769c9af59b07;hpb=fa9ad0cb4b1eade3de0853b91df04bd97c3845fa;p=idzebra-moved-to-github.git diff --git a/isam/memory.c b/isam/memory.c index cd90dcb..d7a327c 100644 --- a/isam/memory.c +++ b/isam/memory.c @@ -4,7 +4,16 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: memory.c,v $ - * Revision 1.7 1995-12-06 09:59:46 quinn + * Revision 1.10 1995-12-12 14:12:47 quinn + * *** empty log message *** + * + * Revision 1.9 1995/12/06 15:48:46 quinn + * Fixed update-problem. + * + * Revision 1.8 1995/12/06 14:48:27 quinn + * Fixed some strange bugs. + * + * Revision 1.7 1995/12/06 09:59:46 quinn * Fixed memory-consumption bug in memory.c * Added more blocksizes to the default ISAM configuration. * @@ -334,7 +343,7 @@ int is_m_peek_record(is_mtable *tab, void *rec) return 1; } -int is_m_read_record(is_mtable *tab, void *buf) +int is_m_read_record(is_mtable *tab, void *buf, int keep) { is_mbuf *mbuf; @@ -347,7 +356,8 @@ int is_m_read_record(is_mtable *tab, void *buf) { if (!mbuf->next) /* end of mblock */ { - if (tab->cur_mblock->state == IS_MBSTATE_CLEAN) + if (!keep && tab->cur_mblock->state == IS_MBSTATE_CLEAN && + tab->cur_mblock->diskpos > 0) { xfree_mbufs(tab->cur_mblock->data); tab->cur_mblock->data = 0; @@ -384,12 +394,12 @@ int is_m_seek_record(is_mtable *tab, const void *rec) for (;;) { - if (is_m_read_record(tab, &peek) <= 0) + if (is_m_read_record(tab, &peek, 1) <= 0) return 1; if ((rs = (*tab->is->cmp)(peek, rec)) > 0) { is_m_unread_record(tab); - return 1; + return rs; } else if (rs == 0) return 0;