-/*
- * Copyright (C) 1994, Index Data I/S
- * All rights reserved.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: memory.c,v $
- * Revision 1.14 1996-10-29 13:56:56 adam
- * Include of zebrautl.h instead of alexutil.h.
- *
- * Revision 1.13 1996/03/20 13:29:16 quinn
- * Bug-fix
- *
- * Revision 1.12 1996/03/11 14:52:23 quinn
- * Fixed update bug. Repeated insertion in the same area sometimes caused
- * problems.
- *
- * Revision 1.11 1996/02/10 12:20:58 quinn
- * *** empty log message ***
- *
- * 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.
- *
- * Revision 1.6 1995/09/04 12:33:47 adam
- * Various cleanup. YAZ util used instead.
- *
- * Revision 1.5 1994/09/28 16:58:33 quinn
- * Small mod.
- *
- * Revision 1.4 1994/09/27 20:03:52 quinn
- * Seems relatively bug-free.
- *
- * Revision 1.3 1994/09/26 17:11:30 quinn
- * Trivial
- *
- * Revision 1.2 1994/09/26 17:06:35 quinn
- * Back again...
- *
- * Revision 1.1 1994/09/26 16:07:56 quinn
- * Most of the functionality in place.
- *
- */
+/* $Id: memory.c,v 1.18 2002-08-02 19:26:56 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+ Index Data Aps
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Zebra; see the file LICENSE.zebra. If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+*/
+
+
/*
* This module accesses and rearranges the records of the tables.
#include <assert.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include <zebrautl.h>
#include <isam.h>
if (!mblock_freelist)
{
- mblock_freelist = xmalloc(sizeof(is_mblock) * MALLOC_CHUNK);
+ mblock_freelist = (is_mblock *)
+ xmalloc(sizeof(is_mblock) * MALLOC_CHUNK);
for (i = 0; i < MALLOC_CHUNK - 1; i++)
mblock_freelist[i].next = &mblock_freelist[i+1];
mblock_freelist[i].next = 0;
}
else
{
- tmp = xmalloc(sizeof(is_mbuf) + is_mbuf_size[type]);
+ tmp = (is_mbuf*) xmalloc(sizeof(is_mbuf) + is_mbuf_size[type]);
tmp->type = type;
}
tmp->refcount = type ? 1 : 0;
*/
void is_m_delete_record(is_mtable *tab)
{
- is_mbuf *mbuf, *new;
+ is_mbuf *mbuf, *inew;
mbuf = tab->cur_mblock->cur_mbuf;
if (mbuf->cur_record >= mbuf->num) /* top of mbuf */
else /* middle of mbuf */
{
/* insert block after current one */
- new = xmalloc_mbuf(IS_MBUF_TYPE_SMALL);
- new->next = mbuf->next;
- mbuf->next = new;
+ inew = xmalloc_mbuf(IS_MBUF_TYPE_SMALL);
+ inew->next = mbuf->next;
+ mbuf->next = inew;
/* virtually transfer everything after current record to new one. */
- new->data = mbuf->data;
+ inew->data = mbuf->data;
mbuf->refcount++;
- new->offset = mbuf->offset + mbuf->cur_record * is_keysize(tab->is);
- new->num = mbuf->num - mbuf->cur_record;
+ inew->offset = mbuf->offset + mbuf->cur_record * is_keysize(tab->is);
+ inew->num = mbuf->num - mbuf->cur_record;
/* old buf now only contains stuff before current record */
mbuf->num = mbuf->cur_record -1;
- tab->cur_mblock->cur_mbuf = new;
+ tab->cur_mblock->cur_mbuf = inew;
}
tab->num_records--;
tab->cur_mblock->num_records--;