summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-05-25 14:40:47 -0700
committerCarl Worth <cworth@cworth.org>2010-05-25 14:40:47 -0700
commit9bb796f33ac67abdf6c0bf55a06b0d8448caa3d3 (patch)
treebefa02f5970009d94154a652d8ca7c5e96e5b017
parent3ff81670848abb29b92e78f45080ad36cc85001c (diff)
Add xtalloc_reference.
Yet another talloc wrapper that should come in handy.
-rw-r--r--glcpp.h6
-rw-r--r--xtalloc.c15
2 files changed, 21 insertions, 0 deletions
diff --git a/glcpp.h b/glcpp.h
index 503731b85b..6171ce8b4a 100644
--- a/glcpp.h
+++ b/glcpp.h
@@ -164,4 +164,10 @@ xtalloc_strndup (const void *t, const char *p, size_t n);
char *
xtalloc_asprintf (const void *t, const char *fmt, ...);
+void *
+_xtalloc_reference_loc (const void *context,
+ const void *ptr, const char *location);
+
+#define xtalloc_reference(ctx, ptr) (_TALLOC_TYPEOF(ptr))_xtalloc_reference_loc((ctx),(ptr), __location__)
+
#endif
diff --git a/xtalloc.c b/xtalloc.c
index e52d12ac6b..656ac2d6cb 100644
--- a/xtalloc.c
+++ b/xtalloc.c
@@ -82,3 +82,18 @@ xtalloc_asprintf (const void *t, const char *fmt, ...)
va_end(ap);
return ret;
}
+
+void *
+_xtalloc_reference_loc (const void *context,
+ const void *ptr, const char *location)
+{
+ void *ret;
+
+ ret = _talloc_reference_loc (context, ptr, location);
+ if (ret == NULL) {
+ fprintf (stderr, "Out of memory.\n");
+ exit (1);
+ }
+
+ return ret;
+}