summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2015-05-25 21:12:29 -0500
committerNicolas Williams <nico@cryptonector.com>2015-05-25 21:20:37 -0500
commitdff96aebcf84259b11dabdbc4fff938d0b69278a (patch)
tree84b4a5ec9a95ea20bc1e79a83a1abafb3f152a3f
parent8af52aaf52f88a34ea39077e88e32ebadac061bb (diff)
Add jv_mem_strdup*() and callocs too
-rw-r--r--jv_alloc.c25
-rw-r--r--jv_alloc.h4
2 files changed, 29 insertions, 0 deletions
diff --git a/jv_alloc.c b/jv_alloc.c
index 50ca7acf..9cd32a91 100644
--- a/jv_alloc.c
+++ b/jv_alloc.c
@@ -1,5 +1,6 @@
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include "jv_alloc.h"
struct nomem_handler {
@@ -129,6 +130,30 @@ void* jv_mem_alloc_unguarded(size_t sz) {
return malloc(sz);
}
+void* jv_mem_calloc(size_t nemb, size_t sz) {
+ void* p = calloc(nemb, sz);
+ if (!p) {
+ memory_exhausted();
+ }
+ return p;
+}
+
+void* jv_mem_calloc_unguarded(size_t nemb, size_t sz) {
+ return calloc(nemb, sz);
+}
+
+char* jv_mem_strdup(const char *s) {
+ char *p = strdup(s);
+ if (!p) {
+ memory_exhausted();
+ }
+ return p;
+}
+
+char* jv_mem_strdup_unguarded(const char *s) {
+ return strdup(s);
+}
+
void jv_mem_free(void* p) {
free(p);
}
diff --git a/jv_alloc.h b/jv_alloc.h
index 91190825..0e383794 100644
--- a/jv_alloc.h
+++ b/jv_alloc.h
@@ -17,6 +17,10 @@ static void jv_mem_invalidate(void* mem, size_t n) {
void* jv_mem_alloc(size_t);
void* jv_mem_alloc_unguarded(size_t);
+void* jv_mem_calloc(size_t, size_t);
+void* jv_mem_calloc_unguarded(size_t, size_t);
+char* jv_mem_strdup(const char *);
+char* jv_mem_strdup_unguarded(const char *);
void jv_mem_free(void*);
__attribute__((warn_unused_result)) void* jv_mem_realloc(void*, size_t);