aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--test-skeleton.c58
2 files changed, 55 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index c07772e..58b05e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-09 Paul Pluzhnikov <ppluzhnikov@gmail.com>
+
+ * test-skeleton.c (oom_error, xmalloc, xcalloc, xrealloc):
+ New functions.
+ (add_temp_file): Use them.
+
2016-06-09 Samuel Thibault <samuel.thibault@ens-lyon.org
* mach/mach/mach_traps.h (mach_print): Add syscall declaration.
diff --git a/test-skeleton.c b/test-skeleton.c
index 29bdc9c..a9ad4ab 100644
--- a/test-skeleton.c
+++ b/test-skeleton.c
@@ -70,6 +70,51 @@ static pid_t pid;
/* Directory to place temporary files in. */
static const char *test_dir;
+static void
+oom_error (const char *fn, size_t size)
+{
+ printf ("%s: unable to allocate %zu bytes: %m\n", fn, size);
+ exit (1);
+}
+
+/* Allocate N bytes of memory dynamically, with error checking. */
+static void *
+__attribute__ ((used))
+xmalloc (size_t n)
+{
+ void *p;
+
+ p = malloc (n);
+ if (p == NULL)
+ oom_error ("malloc", n);
+ return p;
+}
+
+/* Allocate memory for N elements of S bytes, with error checking. */
+static void *
+__attribute__ ((used))
+xcalloc (size_t n, size_t s)
+{
+ void *p;
+
+ p = calloc (n, s);
+ if (p == NULL)
+ oom_error ("calloc", n * s);
+ return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+ with error checking. */
+static void *
+__attribute__ ((used))
+xrealloc (void *p, size_t n)
+{
+ p = realloc (p, n);
+ if (p == NULL)
+ oom_error ("realloc", n);
+ return p;
+}
+
/* List of temporary files. */
struct temp_name_list
{
@@ -83,9 +128,9 @@ __attribute__ ((unused))
add_temp_file (const char *name)
{
struct temp_name_list *newp
- = (struct temp_name_list *) calloc (sizeof (*newp), 1);
+ = (struct temp_name_list *) xcalloc (sizeof (*newp), 1);
char *newname = strdup (name);
- if (newp != NULL && newname != NULL)
+ if (newname != NULL)
{
newp->name = newname;
if (temp_name_list == NULL)
@@ -124,13 +169,8 @@ create_temp_file (const char *base, char **filename)
char *fname;
int fd;
- fname = (char *) malloc (strlen (test_dir) + 1 + strlen (base)
- + sizeof ("XXXXXX"));
- if (fname == NULL)
- {
- puts ("out of memory");
- return -1;
- }
+ fname = (char *) xmalloc (strlen (test_dir) + 1 + strlen (base)
+ + sizeof ("XXXXXX"));
strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX");
fd = mkstemp (fname);