dynamic indicates memory has been dynamically allocated.
if mem_free is called, the memory will be freed.
********************************************************************/
-void mem_create(struct mem_buf *buf, char *data, int size, int margin, BOOL dynamic)
+void mem_create(struct mem_buf *buf, char *data, int offset, int size, int margin, BOOL dynamic)
{
buf->dynamic = dynamic;
buf->data = data;
buf->next = NULL;
- buf->offset.start = 0;
- buf->offset.end = size;
+ buf->offset.start = offset;
+ buf->offset.end = offset + size;
}
/*******************************************************************
buf->data = malloc(buf->data_size);
- if (buf->data == NULL)
+ if (buf->data == NULL && size != 0)
{
DEBUG(3,("mem_alloc: could not malloc size %d\n",
buf->data_size));
while (f != NULL && offset >= f->offset.end)
{
- f = f->next;
-
DEBUG(200,("mem_find: next[%d..%d]\n",
- f->offset.start, f->offset.end));
+ f->offset.start, f->offset.end));
+
+ f = f->next;
}
(*buf) = f;
- DEBUG(200,("mem_find: found data[%d..%d]\n",
- (*buf)->offset.start,(*buf)->offset.end));
+ if (f != NULL)
+ {
+ DEBUG(200,("mem_find: found data[%d..%d]\n",
+ (*buf)->offset.start,(*buf)->offset.end));
+ }
return f != NULL;
}