view old-trunk/lwlib/lw_mem.c @ 350:f5666775d76f

Even more pseudo ops
author lost@starbug
date Sat, 27 Mar 2010 22:59:15 -0600
parents eb230fa7d28e
children
line wrap: on
line source

/*
lw_mem.c

Copyright © 2008 William Astle

This file is part of LWASM.

LWASM 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 3 of the License, or (at your option) any later
version.

This program 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
this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include <stdlib.h>

void (*lw_mem_error)(size_t s) = NULL;

void *lw_malloc(size_t s)
{
	void *r;
	
	if (s < 1)
		s = 1;
	r = malloc(s);
	if (!r && lw_mem_error)
		(*lw_mem_error)(s);
	return r;
}

void *lw_calloc(size_t s)
{
	void *r;
	
	if (s < 1)
		s = 1;
	r = calloc(s, 1);
	if (!r && lw_mem_error)
		(*lw_mem_error)(s);
	return r;
}

void lw_free(void *p)
{
	if (p)
		free(p);
}

void *lw_realloc(void *p, size_t s)
{
	void *r;
	
	if (s < 1)
	{
		free(p);
		return NULL;
	}
	
	r = realloc(p, s);
	if (!r && lw_mem_error)
		(*lw_mem_error)(s);
	return r;
}