add gfx2mem.c/.h: GFX2_malloc() to log allocation failures

This commit is contained in:
Thomas Bernard 2019-05-04 17:19:56 +02:00
parent 91e028794a
commit 0c2ee6659a
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C
3 changed files with 63 additions and 1 deletions

View File

@ -799,7 +799,7 @@ OBJS = main.o init.o graph.o $(APIOBJ) misc.o special.o \
fileformats.o miscfileformats.o libraw2crtc.o \
brush_ops.o buttons_effects.o layers.o \
oldies.o tiles.o colorred.o unicode.o gfx2surface.o \
gfx2log.o tifformat.o
gfx2log.o gfx2mem.o tifformat.o
ifndef NORECOIL
OBJS += loadrecoil.o recoil.o
endif

32
src/gfx2mem.c Normal file
View File

@ -0,0 +1,32 @@
/* vim:expandtab:ts=2 sw=2:
*/
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright 2019 Thomas Bernard
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
Grafx2 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; version 2
of the License.
Grafx2 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 Grafx2; if not, see <http://www.gnu.org/licenses/>
*/
#include <stdlib.h>
#include "gfx2mem.h"
#include "gfx2log.h"
void * GFX2_malloc_and_log(size_t size, const char * file, unsigned line)
{
void * p = malloc(size);
if (p == NULL)
GFX2_Log(GFX2_ERROR, "%s:%u Failed to allocate %lu bytes",
file, line, (unsigned long)size);
return p;
}

30
src/gfx2mem.h Normal file
View File

@ -0,0 +1,30 @@
/* vim:expandtab:ts=2 sw=2:
*/
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright 2019 Thomas Bernard
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
Grafx2 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; version 2
of the License.
Grafx2 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 Grafx2; if not, see <http://www.gnu.org/licenses/>
*/
#ifndef GFX2MEM_H_DEFINED
#define GFX2MEM_H_DEFINED
/// malloc() memory and log in case of error
void * GFX2_malloc_and_log(size_t size, const char * file, unsigned line);
/// malloc() memory and log in case of error
#define GFX2_malloc(size) GFX2_malloc_and_log((size), __FILE__, __LINE__)
#endif