fastmalloc.c
author viric@llimona
Wed, 29 Aug 2007 00:19:14 +0200
changeset 14 a961bb8806b9
parent 5 c87681fff7d3
permissions -rw-r--r--
first 'zparsetext'.

#include <stdio.h>
#include <stdlib.h>
#include "dictre.h"

static int given = 0;
static int sysallocated = 0;
static void *base = 0;

enum {
    STEP = 5*1024*1024
};

void * fastmalloc(int newsize)
{
    void *outptr;
    int old_given = given;

    given += newsize;

    if (given > sysallocated)
    {
        if (STEP > newsize)
        {
            base = realloc(base, STEP);
            sysallocated += STEP;
        }
        else
        {
            base = realloc(base, newsize);
            sysallocated += newsize;
        }
    }

    outptr = base + old_given;

    return outptr;
}