Use XKB alloc macros internally These are used throughout the XKB code, but are defined in XKBsrv.h, which we'd like to avoid. Internal definitions for True/False have also been added since they're in Xlib.h
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
diff --git a/configure.ac b/configure.ac
index e401999..85ba79c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,7 @@ m4_ifndef([XORG_MACROS_VERSION],
[m4_fatal([must install xorg-macros before running autoconf/autogen.sh])])
XORG_MACROS_VERSION([1.2.0])
XORG_RELEASE_VERSION
+XORG_CHECK_MALLOC_ZERO
XORG_CWARNFLAGS
XORG_CHANGELOG
diff --git a/src/Makefile.am b/src/Makefile.am
index fd3dca8..4681034 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
SUBDIRS = makekeys
INCLUDES = -I$(top_srcdir)/include
-AM_CFLAGS = $(X11_CFLAGS) $(CWARNFLAGS)
+AM_CFLAGS = $(X11_CFLAGS) $(CWARNFLAGS) $(XMALLOC_ZERO_CFLAGS)
BUILT_SOURCES = ks_tables.h
ks_tables.h: $(builddir)/makekeys/makekeys$(EXEEXT)
@@ -14,5 +14,6 @@ $(builddir)/makekeys/makekeys$(EXEEXT):
lib_LTLIBRARIES = libxkbcommon.la
libxkbcommon_la_SOURCES = \
+ XkbCommonInt.h \
ks_tables.h \
keysym.c
diff --git a/src/XkbCommonInt.h b/src/XkbCommonInt.h
new file mode 100644
index 0000000..1007ed7
--- /dev/null
+++ b/src/XkbCommonInt.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2008 Dan Nicholson
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+*/
+
+#ifndef _XKBCOMMONINT_H_
+#define _XKBCOMMONINT_H_
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef True
+#define True 1
+#define False 0
+#endif
+
+#ifdef MALLOC_0_RETURNS_NULL
+# define Xmalloc(size) malloc(((size) == 0 ? 1 : (size)))
+# define Xrealloc(ptr, size) realloc((ptr), ((size) == 0 ? 1 : (size)))
+# define Xcalloc(nelem, elsize) calloc(((nelem) == 0 ? 1 : (nelem)), (elsize))
+#else
+# define Xmalloc(size) malloc((size))
+# define Xrealloc(ptr, size) realloc((ptr), (size))
+# define Xcalloc(nelem, elsize) calloc((nelem), (elsize))
+#endif
+
+#define _XkbAlloc(s) Xmalloc((s))
+#define _XkbCalloc(n,s) Xcalloc((n),(s))
+#define _XkbRealloc(o,s) Xrealloc((o),(s))
+#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t)))
+#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t)))
+#define _XkbTypedRealloc(o,n,t) \
+ ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
+#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
+#define _XkbFree(p) free((p))
+
+#endif /* _XKBCOMMONINT_H_ */