1 /*
2  *  ircd-ratbox: A slightly useful ircd.
3  *  memory.h: A header for the memory functions.
4  *
5  *  Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
6  *  Copyright (C) 1996-2002 Hybrid Development Team
7  *  Copyright (C) 2002-2012 ircd-ratbox development team
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License as published by
11  *  the Free Software Foundation; either version 2 of the License, or
12  *  (at your option) any later version.
13  *
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *  GNU General Public License for more details.
18  *
19  *  You should have received a copy of the GNU General Public License
20  *  along with this program; if not, write to the Free Software
21  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
22  *  USA
23  *
24  *  $Id: rb_memory.h 27377 2012-03-16 06:29:42Z dubkat $
25  */
26 
27 #ifndef RB_LIB_H
28 #error "Do not use rb_memory.h directly"
29 #endif
30 
31 #ifndef _RB_MEMORY_H
32 #define _RB_MEMORY_H
33 
34 #include <stdlib.h>
35 
36 
37 void rb_outofmemory(void);
38 
39 static inline void *
rb_malloc(size_t size)40 rb_malloc(size_t size)
41 {
42 	void *ret = calloc(1, size);
43 	if(rb_unlikely(ret == NULL))
44 		rb_outofmemory();
45 	return (ret);
46 }
47 
48 static inline void *
rb_realloc(void * x,size_t y)49 rb_realloc(void *x, size_t y)
50 {
51 	void *ret = realloc(x, y);
52 
53 	if(rb_unlikely(ret == NULL))
54 		rb_outofmemory();
55 	return (ret);
56 }
57 
58 static inline char *
rb_strndup(const char * x,size_t y)59 rb_strndup(const char *x, size_t y)
60 {
61 	char *ret = malloc(y);
62 	if(rb_unlikely(ret == NULL))
63 		rb_outofmemory();
64 	rb_strlcpy(ret, x, y);
65 	return (ret);
66 }
67 
68 static inline char *
rb_strdup(const char * x)69 rb_strdup(const char *x)
70 {
71 	char *ret = malloc(strlen(x) + 1);
72 	if(rb_unlikely(ret == NULL))
73 		rb_outofmemory();
74 	strcpy(ret, x);
75 	return (ret);
76 }
77 
78 
79 static inline void
rb_free(void * ptr)80 rb_free(void *ptr)
81 {
82 	if(rb_likely(ptr != NULL))
83 		free(ptr);
84 }
85 
86 #endif /* _I_MEMORY_H */
87