summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-rw-r--r--gst/nsf/Makefile.am2
-rw-r--r--gst/nsf/memguard.c398
-rw-r--r--gst/nsf/memguard.h95
-rw-r--r--gst/nsf/types.h10
4 files changed, 8 insertions, 497 deletions
diff --git a/gst/nsf/Makefile.am b/gst/nsf/Makefile.am
index 4baf7c68..0214dc22 100644
--- a/gst/nsf/Makefile.am
+++ b/gst/nsf/Makefile.am
@@ -7,7 +7,6 @@ NOSEFART_SOURCES=fmopl.c \
nes_apu.c \
vrc7_snd.c \
fds_snd.c \
- memguard.c \
nes6502.c \
nsf.c \
vrcvisnd.c
@@ -20,7 +19,6 @@ NOSEFART_INCLUDES=fmopl.h \
osd.h \
vrc7_snd.h \
fds_snd.h \
- memguard.h \
nes6502.h \
nsf.h \
types.h \
diff --git a/gst/nsf/memguard.c b/gst/nsf/memguard.c
deleted file mode 100644
index 8ad9749d..00000000
--- a/gst/nsf/memguard.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
-** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com)
-**
-**
-** This program is free software; you can redistribute it and/or
-** modify it under the terms of version 2 of the GNU Library General
-** Public License as published by the Free Software Foundation.
-**
-** 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
-** Library General Public License for more details. To obtain a
-** copy of the GNU Library General Public License, write to the Free
-** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** Any permitted reproduction of these routines, in whole or in part,
-** must bear this legend.
-**
-**
-** memguard.c
-**
-** memory allocation wrapper routines
-**
-** NOTE: based on code (c) 1998 the Retrocade group
-** $Id$
-*/
-
-#include "types.h"
-
-/* undefine macro definitions, so we get real calls */
-#undef malloc
-#undef free
-
-#include <string.h>
-#include <stdlib.h>
-#include "memguard.h"
-#include "log.h"
-
-
-/* Maximum number of allocated blocks at any one time */
-#define MAX_BLOCKS 16384
-
-/* Memory block structure */
-typedef struct memblock_s
-{
- void *block_addr;
- int block_size;
- char *file_name;
- int line_num;
-} memblock_t;
-
-boolean mem_debug = TRUE; /* debugging flag */
-
-
-#ifdef NOFRENDO_DEBUG
-
-static int mem_blockcount = 0; /* allocated block count */
-static memblock_t *mem_record = NULL;
-
-#define GUARD_STRING "GgUuAaRrDdSsTtRrIiNnGgBbLlOoCcKk"
-#define GUARD_LENGTH 64 /* before and after allocated block */
-
-
-/*
-** Check the memory guard to make sure out of bounds writes have not
-** occurred.
-*/
-static boolean
-mem_checkguardblock (void *data, int guard_size)
-{
- uint8 *orig, *chk, *blk;
- int i, alloc_size;
-
- /* get the original pointer */
- orig = (((uint8 *) data) - guard_size);
-
- /* get the size */
- alloc_size = *((uint32 *) orig);
-
- /* now skip past the size */
- blk = orig + sizeof (uint32);
-
- /* check leading guard string */
- chk = GUARD_STRING;
- for (i = sizeof (uint32); i < guard_size; i++) {
- if (0 == *chk)
- chk = GUARD_STRING;
- if (*blk != *chk)
- return FALSE;
- chk++;
- blk++;
- }
-
- /* check end of block */
- chk = GUARD_STRING;
- blk = ((uint8 *) data) + alloc_size;
- for (i = 0; i < guard_size; i++) {
- if (0 == *chk)
- chk = GUARD_STRING;
- if (*blk != *chk)
- return FALSE;
- chk++;
- blk++;
- }
-
- /* we're okay! */
- return TRUE;
-}
-
-/* free a guard block */
-static void
-mem_freeguardblock (void *data, int guard_size)
-{
- uint8 *orig = (((uint8 *) data) - guard_size);
-
- free (orig);
-}
-
-/* fill in the memory guard, advance the pointer to the 'real' memory */
-static void *
-mem_guardblock (int alloc_size, int guard_size)
-{
- void *orig;
- uint8 *blk, *chk;
- int i;
-
- /* allocate memory */
- orig = calloc (alloc_size + (guard_size * 2), 1);
- if (NULL == orig)
- return NULL;
-
- blk = ((uint8 *) orig);
-
- /* store the size of the newly allocated block */
- *((uint32 *) blk) = alloc_size;
-
- /* skip past the size */
- blk += sizeof (uint32);
-
- /* put guard string at beginning of block */
- chk = GUARD_STRING;
- for (i = sizeof (uint32); i < guard_size; i++) {
- if (0 == *chk)
- chk = GUARD_STRING;
- *blk++ = *chk++;
- }
-
- /* check end of block */
- chk = GUARD_STRING;
- blk = guard_size + (uint8 *) orig + alloc_size;
- for (i = 0; i < guard_size; i++) {
- if (0 == *chk)
- chk = GUARD_STRING;
- *blk++ = *chk++;
- }
-
- return (void *) (guard_size + (uint8 *) orig);
-}
-
-
-/* Allocate a bunch of memory to keep track of all memory blocks */
-static void
-mem_init (void)
-{
- if (mem_record) {
- free (mem_record);
- mem_record = NULL;
- }
-
- mem_record = calloc (MAX_BLOCKS * sizeof (memblock_t), 1);
- ASSERT (mem_record);
-}
-
-/* add a block of memory to the master record */
-static void
-mem_addblock (void *data, int block_size, char *file, int line)
-{
- int i;
-
- for (i = 0; i < MAX_BLOCKS; i++) {
- if (NULL == mem_record[i].block_addr) {
- mem_record[i].block_addr = data;
- mem_record[i].block_size = block_size;
- mem_record[i].file_name = file;
- mem_record[i].line_num = line;
- return;
- }
- }
-
- ASSERT_MSG ("out of memory blocks.");
-}
-
-/* find an entry in the block record and delete it */
-static void
-mem_deleteblock (void *data, char *file, int line)
-{
- int i;
- char fail[256];
-
- for (i = 0; i < MAX_BLOCKS; i++) {
- if (data == mem_record[i].block_addr) {
- if (FALSE == mem_checkguardblock (mem_record[i].block_addr, GUARD_LENGTH)) {
- sprintf (fail,
- "mem_deleteblock 0x%08X at line %d of %s -- block corrupt",
- (uint32) data, line, file);
- ASSERT_MSG (fail);
- }
-
- memset (&mem_record[i], 0, sizeof (memblock_t));
- return;
- }
- }
-
- sprintf (fail, "mem_deleteblock 0x%08X at line %d of %s -- block not found",
- (uint32) data, line, file);
- ASSERT_MSG (fail);
-}
-#endif /* NOFRENDO_DEBUG */
-
-/* allocates memory and clears it */
-#ifdef NOFRENDO_DEBUG
-void *
-_my_malloc (int size, char *file, int line)
-#else
-void *
-_my_malloc (int size)
-#endif
-{
- void *temp;
- char fail[256];
-
-#ifdef NOFRENDO_DEBUG
- if (NULL == mem_record && FALSE != mem_debug)
- mem_init ();
-
- if (FALSE != mem_debug)
- temp = mem_guardblock (size, GUARD_LENGTH);
- else
-#endif /* NOFRENDO_DEBUG */
- temp = calloc (sizeof (uint8), size);
-
- if (NULL == temp) {
-#ifdef NOFRENDO_DEBUG
- sprintf (fail, "malloc: out of memory at line %d of %s. block size: %d\n",
- line, file, size);
-#else
- sprintf (fail, "malloc: out of memory. block size: %d\n", size);
-#endif
- ASSERT_MSG (fail);
- }
-#ifdef NOFRENDO_DEBUG
- if (FALSE != mem_debug)
- mem_addblock (temp, size, file, line);
-
- mem_blockcount++;
-#endif
-
- return temp;
-}
-
-/* free a pointer allocated with my_malloc */
-#ifdef NOFRENDO_DEBUG
-void
-_my_free (void **data, char *file, int line)
-#else
-void
-_my_free (void **data)
-#endif
-{
- char fail[256];
-
- if (NULL == data || NULL == *data
- || 0xFFFFFFFF == (uint32) * data || 0xFFFFFFFF == (uint32) data) {
-#ifdef NOFRENDO_DEBUG
- sprintf (fail, "free: attempted to free NULL pointer at line %d of %s\n",
- line, file);
-#else
- sprintf (fail, "free: attempted to free NULL pointer.\n");
-#endif
- ASSERT_MSG (fail);
- }
-#ifdef NOFRENDO_DEBUG
- /* if this is true, we are in REAL trouble */
- if (0 == mem_blockcount) {
- ASSERT_MSG ("free: attempted to free memory when no blocks available");
- }
-
- if (FALSE != mem_debug)
- mem_deleteblock (*data, file, line);
-
- mem_blockcount--; /* dec our block count */
-
- if (FALSE != mem_debug)
- mem_freeguardblock (*data, GUARD_LENGTH);
- else
-#endif /* NOFRENDO_DEBUG */
- free (*data);
-
- *data = NULL; /* NULL our source */
-}
-
-/* check for orphaned memory handles */
-void
-mem_checkleaks (void)
-{
-#ifdef NOFRENDO_DEBUG
- int i;
-
- if (FALSE == mem_debug)
- return;
-
- if (mem_blockcount) {
- log_printf ("memory leak - %d unfreed block%s\n\n", mem_blockcount,
- mem_blockcount == 1 ? "" : "s");
-
- for (i = 0; i < MAX_BLOCKS; i++) {
- if (mem_record[i].block_addr) {
- log_printf ("addr: 0x%08X, size: %d, line %d of %s%s\n",
- (uint32) mem_record[i].block_addr,
- mem_record[i].block_size,
- mem_record[i].line_num,
- mem_record[i].file_name,
- (FALSE == mem_checkguardblock (mem_record[i].block_addr,
- GUARD_LENGTH))
- ? " -- block corrupt" : "");
- }
- }
- } else
- log_printf ("no memory leaks\n");
-#endif
-}
-
-void
-mem_checkblocks (void)
-{
-#ifdef NOFRENDO_DEBUG
- int i;
-
- if (FALSE == mem_debug)
- return;
-
- for (i = 0; i < MAX_BLOCKS; i++) {
- if (mem_record[i].block_addr) {
- if (FALSE == mem_checkguardblock (mem_record[i].block_addr, GUARD_LENGTH)) {
- log_printf ("addr: 0x%08X, size: %d, line %d of %s -- block corrupt\n",
- (uint32) mem_record[i].block_addr,
- mem_record[i].block_size,
- mem_record[i].line_num, mem_record[i].file_name);
- }
- }
- }
-#endif /* NOFRENDO_DEBUG */
-}
-
-/*
-** $Log$
-** Revision 1.1 2006/07/13 15:07:28 wtay
-** Based on patches by: Johan Dahlin <johan at gnome dot org>
-** Ronald Bultje <rbultje at ronald dot bitfreak dot net>
-** * configure.ac:
-** * gst/nsf/Makefile.am:
-** * gst/nsf/dis6502.h:
-** * gst/nsf/fds_snd.c:
-** * gst/nsf/fds_snd.h:
-** * gst/nsf/fmopl.c:
-** * gst/nsf/fmopl.h:
-** * gst/nsf/gstnsf.c:
-** * gst/nsf/gstnsf.h:
-** * gst/nsf/log.c:
-** * gst/nsf/log.h:
-** * gst/nsf/memguard.c:
-** * gst/nsf/memguard.h:
-** * gst/nsf/mmc5_snd.c:
-** * gst/nsf/mmc5_snd.h:
-** * gst/nsf/nes6502.c:
-** * gst/nsf/nes6502.h:
-** * gst/nsf/nes_apu.c:
-** * gst/nsf/nes_apu.h:
-** * gst/nsf/nsf.c:
-** * gst/nsf/nsf.h:
-** * gst/nsf/osd.h:
-** * gst/nsf/types.h:
-** * gst/nsf/vrc7_snd.c:
-** * gst/nsf/vrc7_snd.h:
-** * gst/nsf/vrcvisnd.c:
-** * gst/nsf/vrcvisnd.h:
-** Added NSF decoder plugin. Fixes 151192.
-**
-** Revision 1.8 2000/06/26 04:54:48 matt
-** simplified and made more robust
-**
-** Revision 1.7 2000/06/12 01:11:41 matt
-** cleaned up some error output for win32
-**
-** Revision 1.6 2000/06/09 15:12:25 matt
-** initial revision
-**
-*/
diff --git a/gst/nsf/memguard.h b/gst/nsf/memguard.h
deleted file mode 100644
index 2074a9e6..00000000
--- a/gst/nsf/memguard.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com)
-**
-**
-** This program is free software; you can redistribute it and/or
-** modify it under the terms of version 2 of the GNU Library General
-** Public License as published by the Free Software Foundation.
-**
-** 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
-** Library General Public License for more details. To obtain a
-** copy of the GNU Library General Public License, write to the Free
-** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** Any permitted reproduction of these routines, in whole or in part,
-** must bear this legend.
-**
-**
-** memguard.h
-**
-** memory allocation wrapper routines
-** $Id$
-*/
-
-#ifndef _MEMGUARD_H_
-#define _MEMGUARD_H_
-
-#ifdef NOFRENDO_DEBUG
-
-#define malloc(s) _my_malloc((s), __FILE__, __LINE__)
-#define free(d) _my_free((void **) &(d), __FILE__, __LINE__)
-
-extern void *_my_malloc(int size, char *file, int line);
-extern void _my_free(void **data, char *file, int line);
-
-#else /* Non-debugging versions of calls */
-
-#define malloc(s) _my_malloc((s))
-#define free(d) _my_free((void **) &(d))
-
-extern void *_my_malloc(int size);
-extern void _my_free(void **data);
-
-#endif /* NOFRENDO_DEBUG */
-
-
-extern void mem_checkblocks(void);
-extern void mem_checkleaks(void);
-
-extern boolean mem_debug;
-
-#endif /* _MEMGUARD_H_ */
-
-/*
-** $Log$
-** Revision 1.1 2006/07/13 15:07:28 wtay
-** Based on patches by: Johan Dahlin <johan at gnome dot org>
-** Ronald Bultje <rbultje at ronald dot bitfreak dot net>
-** * configure.ac:
-** * gst/nsf/Makefile.am:
-** * gst/nsf/dis6502.h:
-** * gst/nsf/fds_snd.c:
-** * gst/nsf/fds_snd.h:
-** * gst/nsf/fmopl.c:
-** * gst/nsf/fmopl.h:
-** * gst/nsf/gstnsf.c:
-** * gst/nsf/gstnsf.h:
-** * gst/nsf/log.c:
-** * gst/nsf/log.h:
-** * gst/nsf/memguard.c:
-** * gst/nsf/memguard.h:
-** * gst/nsf/mmc5_snd.c:
-** * gst/nsf/mmc5_snd.h:
-** * gst/nsf/nes6502.c:
-** * gst/nsf/nes6502.h:
-** * gst/nsf/nes_apu.c:
-** * gst/nsf/nes_apu.h:
-** * gst/nsf/nsf.c:
-** * gst/nsf/nsf.h:
-** * gst/nsf/osd.h:
-** * gst/nsf/types.h:
-** * gst/nsf/vrc7_snd.c:
-** * gst/nsf/vrc7_snd.h:
-** * gst/nsf/vrcvisnd.c:
-** * gst/nsf/vrcvisnd.h:
-** Added NSF decoder plugin. Fixes 151192.
-**
-** Revision 1.5 2000/06/26 04:54:48 matt
-** simplified and made more robust
-**
-** Revision 1.4 2000/06/09 15:12:25 matt
-** initial revision
-**
-*/
diff --git a/gst/nsf/types.h b/gst/nsf/types.h
index d1fa7498..04d7bb6a 100644
--- a/gst/nsf/types.h
+++ b/gst/nsf/types.h
@@ -61,7 +61,6 @@ typedef uint8 boolean;
#ifdef NOFRENDO_DEBUG
#include <stdlib.h>
-#include "memguard.h"
#include "log.h"
#define ASSERT(expr) if (FALSE == (expr))\
{\
@@ -75,7 +74,7 @@ typedef uint8 boolean;
exit(1);\
}
#else /* Not debugging */
-#include "memguard.h"
+#include <stdlib.h>
#define ASSERT(expr)
#define ASSERT_MSG(msg)
#endif
@@ -84,6 +83,13 @@ typedef uint8 boolean;
/*
** $Log$
+** Revision 1.2 2006/07/14 09:11:11 wtay
+** * gst/nsf/Makefile.am:
+** * gst/nsf/memguard.c:
+** * gst/nsf/memguard.h:
+** * gst/nsf/types.h:
+** Remove crack malloc/free replacement.
+**
** Revision 1.1 2006/07/13 15:07:28 wtay
** Based on patches by: Johan Dahlin <johan at gnome dot org>
** Ronald Bultje <rbultje at ronald dot bitfreak dot net>