From 7ad8a17dfacb027b89c6a1d660d7126d3b6a1be2 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Mon, 4 Dec 2017 12:36:49 +0000 Subject: [PATCH] utils: Add an abort-on-OOM wrapper for asprintf Signed-off-by: Simon McVittie <smcv@collabora.com> --- utils/utils.c | 16 ++++++++++++++++ utils/utils.h | 1 + 2 files changed, 17 insertions(+) diff --git a/utils/utils.c b/utils/utils.c index b38292fc3..f6da457c9 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -429,6 +429,22 @@ xcalloc( size_t n, size_t size ) return ret; } +int +xasprintf( char **dest, const char *format, ...) +{ + int ret; + va_list ap; + + va_start( ap, format ); + ret = vasprintf( dest, format, ap ); + va_end( ap ); + + if( ret < 0 ) + oom(); + + return ret; +} + /* * _capsule_set_error_literal: * @code_dest: (out) (optional): used to return an errno value diff --git a/utils/utils.h b/utils/utils.h index 7db98bac1..1947cb0f3 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -88,6 +88,7 @@ void oom( void ) __attribute__((noreturn)); char *xstrdup( const char *s ); void *xrealloc( void *ptr, size_t size ) __attribute__((alloc_size(2))); void *xcalloc( size_t n, size_t size ) __attribute__((alloc_size(1, 2), malloc)); +int xasprintf( char **s, const char *format, ...) __attribute__((format(printf, 2, 3))); /* * _capsule_steal_pointer: -- GitLab