OS X kernel support (see https://github.com/aquynh/capstone/pull/528)
diff --git a/cs.c b/cs.c
index cd10d80..574b52f 100644
--- a/cs.c
+++ b/cs.c
@@ -79,12 +79,29 @@
unsigned int all_arch = 0;
#ifdef CAPSTONE_USE_SYS_DYN_MEM
+#ifndef CAPSTONE_HAS_OSXKERNEL
cs_malloc_t cs_mem_malloc = malloc;
cs_calloc_t cs_mem_calloc = calloc;
cs_realloc_t cs_mem_realloc = realloc;
cs_free_t cs_mem_free = free;
cs_vsnprintf_t cs_vsnprintf = vsnprintf;
#else
+extern void* kern_os_malloc(size_t size);
+extern void kern_os_free(void* addr);
+extern void* kern_os_realloc(void* addr, size_t nsize);
+
+static void* cs_kern_os_calloc(size_t num, size_t size)
+{
+ return kern_os_malloc(num * size); // malloc bzeroes the buffer
+}
+
+cs_malloc_t cs_mem_malloc = kern_os_malloc;
+cs_calloc_t cs_mem_calloc = cs_kern_os_calloc;
+cs_realloc_t cs_mem_realloc = kern_os_realloc;
+cs_free_t cs_mem_free = kern_os_free;
+cs_vsnprintf_t cs_vsnprintf = vsnprintf;
+#endif
+#else
cs_malloc_t cs_mem_malloc = NULL;
cs_calloc_t cs_mem_calloc = NULL;
cs_realloc_t cs_mem_realloc = NULL;