/*
- * Copyright (C) 1994, Index Data I/S
+ * Copyright (C) 1994-1999, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: memory.c,v $
- * Revision 1.12 1996-03-11 14:52:23 quinn
+ * Revision 1.17 1999-05-26 07:49:14 adam
+ * C++ compilation.
+ *
+ * Revision 1.16 1999/02/02 14:51:20 adam
+ * Updated WIN32 code specific sections. Changed header.
+ *
+ * Revision 1.15 1997/09/09 13:38:11 adam
+ * Partial port to WIN95/NT.
+ *
+ * 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.
*
#include <assert.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
-#include <alexutil.h>
+#include <zebrautl.h>
#include <isam.h>
int is_mbuf_size[3] = { 0, 1024, 4096 };
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--;
mbuf = tab->cur_mblock->cur_mbuf = mbuf->next;
mbuf->cur_record = 0;
}
+ /*
logf (LOG_DEBUG, "is_m_write_rec(rec == %d)", mbuf->cur_record);
+ */
memcpy(mbuf->data + mbuf->offset + mbuf->cur_record * is_keysize(tab->is),
rec, is_keysize(tab->is));
mbuf->num++;