Ejemplo n.º 1
0
struct path *varray_add(struct varray *varray, struct path path) {
	struct path *store;
	if(likely(varray->last_block_pos < blocklen)) {
		store = varray->blocks[varray->last_block] + varray->last_block_pos++;
	} else {
		varray->blocks = realloc_checked(varray->blocks, (++varray->last_block + 1) * sizeof(*varray->blocks));
		store = varray->blocks[varray->last_block] = malloc_checked(BLOCKSIZE);
		varray->last_block_pos = 1;
	}
	*store = path;
	return store;
}
Ejemplo n.º 2
0
static bool video_coord_array_resize(video_coord_array_t *ca,
   unsigned cap)
{
   size_t base_size    = sizeof(float) * cap;

   if (!realloc_checked((void**)&ca->coords.vertex,
            2 * base_size))
      return false;
   if (!realloc_checked((void**)&ca->coords.color,
            4 * base_size))
      return false;
   if (!realloc_checked((void**)&ca->coords.tex_coord,
            2 * base_size))
      return false;
   if (!realloc_checked((void**)&ca->coords.lut_tex_coord,
            2 * base_size))
      return false;

   ca->allocated = cap;

   return true;
}
Ejemplo n.º 3
0
/******************************************************************************\
 Reallocate [ptr] to [size] bytes large. Abort on error. When memory checking
 is enabled, this calls realloc_checked() instead.
\******************************************************************************/
void *C_realloc_full(const char *file, int line, const char *function,
                     void *ptr, size_t size)
{
        static int inited;

        if (!inited) {
                inited = TRUE;
                C_var_unlatch(&c_mem_check);
        }
        if (c_mem_check.value.n)
                return realloc_checked(file, line, function, ptr, size);
        ptr = realloc(ptr, size);
        if (!ptr)
                C_error_full(file, line, function,
                             "Out of memory, tried to allocate %u bytes",
                             size);
        return ptr;
}