summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorremoitnane <remoit(DOT)nane(AT)gmail(DOT)com>2010-08-07 17:58:47 -0700
committerremoitnane <remoit(DOT)nane(AT)gmail(DOT)com>2010-08-07 17:58:47 -0700
commita2849240106686f7e745809baaf63a3674e93971 (patch)
tree1ded41dc5ab54ba37a4ba5c0eb003d5cca033003 /src/common
parentfb9e8532b45b9b9aaa66842715db7d57b5374c20 (diff)
downloadtmwa-a2849240106686f7e745809baaf63a3674e93971.tar.gz
tmwa-a2849240106686f7e745809baaf63a3674e93971.tar.bz2
tmwa-a2849240106686f7e745809baaf63a3674e93971.tar.xz
tmwa-a2849240106686f7e745809baaf63a3674e93971.zip
Tweak memory wrappers and add one for strdup()
Diffstat (limited to 'src/common')
-rw-r--r--src/common/malloc.c55
-rw-r--r--src/common/malloc.h3
2 files changed, 36 insertions, 22 deletions
diff --git a/src/common/malloc.c b/src/common/malloc.c
index 3b302b7..8d68bee 100644
--- a/src/common/malloc.c
+++ b/src/common/malloc.c
@@ -1,53 +1,68 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "malloc.h"
+#define SHOW_MEMORY_ERROR(file, line, func, type, msg) \
+ fprintf (stderr, "%s:%d: in func %s(): %s() error, %s\n", \
+ file, line, func, type, msg)
+
void *aMalloc_ (size_t size, const char *file, int line, const char *func)
{
- void *ret;
+ void *ret = malloc (size);
-// printf("%s:%d: in func %s: malloc %d\n",file,line,func,size);
- ret = malloc (size);
+ /* printf ("%s:%d: in func %s(): malloc(%d)\n", file, line, func, size); */
if (ret == NULL)
{
- printf ("%s:%d: in func %s: malloc error out of memory!\n", file,
- line, func);
- exit (1);
-
+ SHOW_MEMORY_ERROR (file, line, func, "malloc", "out of memory");
+ exit (EXIT_FAILURE);
}
+
return ret;
}
void *aCalloc_ (size_t num, size_t size, const char *file, int line,
const char *func)
{
- void *ret;
+ void *ret = calloc (num, size);
-// printf("%s:%d: in func %s: calloc %d %d\n",file,line,func,num,size);
- ret = calloc (num, size);
+ /* printf ("%s:%d: in func %s(): calloc(%d, %d)\n", file, line, func, num,
+ size); */
if (ret == NULL)
{
- printf ("%s:%d: in func %s: calloc error out of memory!\n", file,
- line, func);
- exit (1);
-
+ SHOW_MEMORY_ERROR (file, line, func, "calloc", "out of memory");
+ exit (EXIT_FAILURE);
}
+
return ret;
}
void *aRealloc_ (void *p, size_t size, const char *file, int line,
const char *func)
{
- void *ret;
+ void *ret = realloc (p, size);
-// printf("%s:%d: in func %s: realloc %p %d\n",file,line,func,p,size);
- ret = realloc (p, size);
+ /* printf ("%s:%d: in func %s(): realloc(%p, %d)\n", file, line, func, p,
+ size); */
if (ret == NULL)
{
- printf ("%s:%d: in func %s: realloc error out of memory!\n", file,
- line, func);
- exit (1);
+ SHOW_MEMORY_ERROR (file, line, func, "realloc", "out of memory");
+ exit (EXIT_FAILURE);
+ }
+
+ return ret;
+}
+
+char *aStrdup_ (const char *p, const char *file, int line, const char *func)
+{
+ char *ret = strdup (p);
+ /* printf ("%s:%d: in func %s(): strdup(%p)\n", file, line, func, p); */
+ if (ret == NULL)
+ {
+ SHOW_MEMORY_ERROR (file, line, func, "strdup", "out of memory");
+ exit (EXIT_FAILURE);
}
+
return ret;
}
diff --git a/src/common/malloc.h b/src/common/malloc.h
index 3195773..5fc8cbe 100644
--- a/src/common/malloc.h
+++ b/src/common/malloc.h
@@ -1,8 +1,6 @@
#ifndef _MALLOC_H_
#define _MALLOC_H_
-#include <stdlib.h>
-
#if __STDC_VERSION__ < 199901L
# if __GNUC__ >= 2
# define __func__ __FUNCTION__
@@ -16,6 +14,7 @@
void *aMalloc_ (size_t, const char *, int, const char *);
void *aCalloc_ (size_t, size_t, const char *, int, const char *);
void *aRealloc_ (void *, size_t, const char *, int, const char *);
+char *aStrdup_ (const char *, const char *, int, const char *);
#define aMalloc(n) aMalloc_(n,ALC_MARK)
#define aMallocA(n) aMalloc_(n,ALC_MARK)