# HG changeset patch # User Jun Wu # Date 1455720698 0 # Node ID c6705c6303dd449e49ccc93e047388e609607aa2 # Parent ad11edefa7c4615568d6d49464b40877251520e9 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 -r ad11edefa7c4 -r c6705c6303dd contrib/chg/util.c --- a/contrib/chg/util.c Mon Feb 15 13:20:20 2016 -0800 +++ b/contrib/chg/util.c Wed Feb 17 14:51:38 2016 +0000 @@ -50,6 +50,22 @@ 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 -r ad11edefa7c4 -r c6705c6303dd contrib/chg/util.h --- a/contrib/chg/util.h Mon Feb 15 13:20:20 2016 -0800 +++ b/contrib/chg/util.h Wed Feb 17 14:51:38 2016 +0000 @@ -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_ */