From da0ee5e7efab316635f59d212028844f848fa6ce Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 22 Oct 2013 10:26:22 -0700 Subject: [PATCH] Add xmalloc function To simplify the code by abstracting away repeated checks for malloc failure and exit. --- Makefile.local | 6 ++++-- execute.c | 7 ++----- metrics.c | 7 ++----- xmalloc.c | 39 +++++++++++++++++++++++++++++++++++++++ xmalloc.h | 28 ++++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 xmalloc.c create mode 100644 xmalloc.h diff --git a/Makefile.local b/Makefile.local index 8d2475b..4ace9aa 100644 --- a/Makefile.local +++ b/Makefile.local @@ -76,7 +76,8 @@ distclean: clean fips_srcs = \ execute.c \ - fips.c + fips.c \ + xmalloc.c fips_modules = $(fips_srcs:.c=.o) @@ -94,7 +95,8 @@ libfips_srcs = \ fips-dispatch-gl.c \ glwrap.c \ glxwrap.c \ - metrics.c + metrics.c \ + xmalloc.c ifeq ($(HAVE_EGL),Yes) libfips_srcs += eglwrap.c diff --git a/execute.c b/execute.c index cc01c43..07fd30f 100644 --- a/execute.c +++ b/execute.c @@ -36,6 +36,7 @@ #include #include "execute.h" +#include "xmalloc.h" /* Terminate a string representing a filename at the final '/' to * eliminate the final filename component, (leaving only the directory @@ -294,11 +295,7 @@ execute_with_fips_preload (int argc, char * const argv[]) char **execvp_args; int i; - execvp_args = malloc((argc + 1) * sizeof(char *)); - if (execvp_args == NULL) { - fprintf (stderr, "Out of memory,\n"); - return 1; - } + execvp_args = xmalloc((argc + 1) * sizeof(char *)); for (i = 0; i < argc; i++) { execvp_args[i] = argv[i]; diff --git a/metrics.c b/metrics.c index 77d7321..09083e6 100644 --- a/metrics.c +++ b/metrics.c @@ -29,6 +29,7 @@ #include "fips-dispatch-gl.h" #include "metrics.h" +#include "xmalloc.h" typedef struct counter { @@ -116,11 +117,7 @@ metrics_counter_start (void) { counter_t *counter; - counter = malloc (sizeof(counter_t)); - if (counter == NULL) { - fprintf (stderr, "Out of memory\n"); - exit (1); - } + counter = xmalloc (sizeof(counter_t)); glGenQueries (1, &counter->id); diff --git a/xmalloc.c b/xmalloc.c new file mode 100644 index 0000000..22eb7cf --- /dev/null +++ b/xmalloc.c @@ -0,0 +1,39 @@ +/* Copyright © 2013, Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include + +#include "xmalloc.h" + +void * +xmalloc (size_t size) +{ + void *ret; + + ret = malloc (size); + if (ret == NULL) { + fprintf (stderr, "Out of memory\n"); + exit (1); + } + + return ret; +} diff --git a/xmalloc.h b/xmalloc.h new file mode 100644 index 0000000..b36c900 --- /dev/null +++ b/xmalloc.h @@ -0,0 +1,28 @@ +/* Copyright © 2013, Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef XMALLOC_H +#define XMALLOC_H + +void * +xmalloc (size_t size); + +#endif -- 2.43.0