File: mymalloc.h

package info (click to toggle)
mmorph 2.3.4.2-17
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,248 kB
  • sloc: ansic: 4,986; yacc: 1,215; lex: 417; makefile: 259; sh: 48; sed: 33; csh: 26
file content (112 lines) | stat: -rw-r--r-- 2,456 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
    mmorph, MULTEXT morphology tool
    Version 2.3, October 1995
    Copyright (c) 1994,1995 ISSCO/SUISSETRA, Geneva, Switzerland
    Dominique Petitpierre, <petitp@divsun.unige.ch>
*/
#ifndef mymalloc_h
#define mymalloc_h

#include "config.h"

#ifndef NULL
#define NULL    0L
#endif

#ifdef __STDC__
#define T_PTR	void *
#else
#define T_PTR	char *
#endif

#ifdef  MALLOC_FUNC_CHECK

#include <malloc.h>

#define MEM_ERROR(f_name) \
	if (errno == ENOMEM) \
	    fatal_error("out of memory (%s)",f_name); \
	else \
	    fatal_error("program bug: memory allocation error (%s)",f_name)

#define	my_malloc(var, size) \
{ \
    if ((*(var) = malloc(size)) == NULL) \
	MEM_ERROR("malloc"); \
}

#define my_realloc(var, size) \
{ \
    if ((*(var) = realloc(*(var), (size))) == NULL) \
	MEM_ERROR("realloc"); \
}


#define my_calloc(var, nelem, size) \
{ \
    if ((*(var) = calloc((nelem), (size))) == NULL) \
	MEM_ERROR("calloc"); \
}

#define my_strdup(var, str) \
{ \
    if ((*(var) = STRDUP(str)) == NULL) \
	MEM_ERROR("strdup"); \
}

#if defined(STDC_HEADERS) || defined(__GNUC__) || lint
#define my_free(ptr) \
{ \
    if ((ptr) == NULL) \
	fatal_error("program bug: trying to free a NULL pointer"); \
    errno = 0;	/* clear error */ \
    free(ptr); \
    if (errno != 0) \
	fatal_error("program bug: cannot free pointer (errno=%d=%s)", \
		    errno, strerror(errno)); \
}
#else
#define my_free(ptr) \
{ \
    if ((ptr) == NULL) \
	fatal_error("program bug: trying to free a NULL pointer"); \
    errno = 0;	/* clear error */ \
    if (free(ptr) != 1) \
	fatal_error("program bug: cannot free pointer (errno=%d)", \
		    errno, strerror(errno));			   \
}

#endif	/* defined(STDC_HEADERS) || defined(__GNUC__) || lint */
#else

extern void my_malloc();
extern void my_free();
extern void my_realloc();
extern void my_calloc();
extern void my_strdup();

#endif	/* MALLOC_FUNC_CHECK */

#include <stddef.h>

#define MY_MALLOC(var,type) \
    my_malloc((T_PTR *) &(var), (size_t) sizeof (type))

#define MY_STRALLOC(var,size) \
    my_malloc((T_PTR *) &(var), (size_t) size)

#define MY_REALLOC(var, nelem, type) \
    my_realloc((T_PTR *) &(var), (size_t) ((nelem) * sizeof (type)))

#define MY_CALLOC(var,nelem,type) \
    my_calloc((T_PTR *) &(var), (size_t) (nelem), (size_t) sizeof (type))

#define MY_STRDUP(var,str) \
    my_strdup((char **) &(var), (char *) (str))

#define MY_FREE(ptr) \
    my_free((T_PTR) (ptr))



#endif	/* mymalloc_h */