summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/stdlib.h1
-rw-r--r--src/lib/stdlib.C15
2 files changed, 16 insertions, 0 deletions
diff --git a/src/include/stdlib.h b/src/include/stdlib.h
index e9995128e..ef2859de5 100644
--- a/src/include/stdlib.h
+++ b/src/include/stdlib.h
@@ -33,6 +33,7 @@ extern "C"
void* malloc(size_t);
void free(void*);
void* realloc(void*, size_t);
+void* calloc(size_t, size_t);
#ifdef __cplusplus
};
diff --git a/src/lib/stdlib.C b/src/lib/stdlib.C
index d9fa9e9fc..f0c3fad74 100644
--- a/src/lib/stdlib.C
+++ b/src/lib/stdlib.C
@@ -77,3 +77,18 @@ void* realloc(void* p, size_t s)
return HeapManager::realloc(p,s);
}
+void* calloc(size_t num, size_t size)
+{
+ // Allocate a block of memory for an array of 'num' elements, each of them
+ // 'size' bytes long and initialize to zero
+ size_t total_size = num * size;
+ void* mem = NULL;
+
+ if (total_size)
+ {
+ mem = malloc(total_size);
+ memset(mem, 0, total_size);
+ }
+
+ return mem;
+}
OpenPOWER on IntegriCloud