From patchwork Wed Feb 17 15:08:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1,of,3,V2] chg: add utility functions mallocx, reallocx From: Jun Wu X-Patchwork-Id: 13241 Message-Id: <5ecfc2796fdb43147911.1455721737@x1c> To: Date: Wed, 17 Feb 2016 15:08:57 +0000 # HG changeset patch # User Jun Wu # Date 1455720698 0 # Wed Feb 17 14:51:38 2016 +0000 # Node ID 5ecfc2796fdb4314791139aece42d11d9d24fe0f # Parent 95bf01b8754016200a99fd3538e78030b2028c60 chg: add utility functions mallocx, reallocx They are like malloc and realloc but will abort the program on error. A lot of places use {m,re}alloc and check their results. This patch can simplify them. diff --git a/contrib/chg/util.c b/contrib/chg/util.c --- a/contrib/chg/util.c +++ b/contrib/chg/util.c @@ -50,6 +50,20 @@ va_end(args); } +void *mallocx(size_t size) +{ + void *result = malloc(size); + if (!result) abortmsg("failed to malloc"); + return result; +} + +void *reallocx(void *ptr, size_t size) +{ + void *result = realloc(ptr, size); + if (!result) abortmsg("failed to realloc"); + return result; +} + /* * Execute a shell command in mostly the same manner as system(), with the * give environment variables, after chdir to the given cwd. Returns a status diff --git a/contrib/chg/util.h b/contrib/chg/util.h --- a/contrib/chg/util.h +++ b/contrib/chg/util.h @@ -19,6 +19,9 @@ void enabledebugmsg(void); void debugmsg(const char *fmt, ...) PRINTF_FORMAT_; +void *mallocx(size_t size); +void *reallocx(void *ptr, size_t size); + int runshellcmd(const char *cmd, const char *envp[], const char *cwd); #endif /* UTIL_H_ */