]> granicus.if.org Git - check/commitdiff
* Fix problems with the use of AC_FUNC_MALLOC, AC_FUNC_REALLOC, and
authorcpickett <cpickett@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Tue, 23 Dec 2008 05:04:01 +0000 (05:04 +0000)
committercpickett <cpickett@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Tue, 23 Dec 2008 05:04:01 +0000 (05:04 +0000)
  AC_REPLACE_FUNCS([strsignal]):
  - add @LIBOBJS@ to libcheck_la_LIBADD and libcheckinternal_la_LIBADD
  - create separate malloc.c, realloc.c, and strsignal.c files
  - move function definitions from check.c into these files

git-svn-id: svn+ssh://svn.code.sf.net/p/check/code/trunk@455 64e312b2-a51f-0410-8e61-82d0ca0eb02a

src/Makefile.am
src/check.c
src/malloc.c [new file with mode: 0644]
src/realloc.c [new file with mode: 0644]
src/strsignal.c [new file with mode: 0644]

index bba1c1569b48f28130092cd1c0902739e0d1b7a7..cc2129b6095628206f324529ab0595631110aa8e 100644 (file)
@@ -40,11 +40,11 @@ $(EXPORT_SYM): check.h.in
 libcheck_la_DEPENDENCIES= $(EXPORT_SYM)
 libcheck_la_LDFLAGS    = -export-symbols $(EXPORT_SYM)
 libcheck_la_SOURCES    = $(CFILES) $(HFILES)
-libcheck_la_LIBADD     = @GCOV_LIBS@
+libcheck_la_LIBADD     = @LIBOBJS@ @GCOV_LIBS@
 
 
 libcheckinternal_la_SOURCES    = $(libcheck_la_SOURCES)
-libcheckinternal_la_LIBADD     = @GCOV_LIBS@
+libcheckinternal_la_LIBADD     = @LIBOBJS@ @GCOV_LIBS@
 
 
 CLEANFILES     = *~ *.gcno $(EXPORT_SYM)
index b1597155112ca48829cd37ed470f2b62054b4a80..b937ce3c0df46aa8c08b9f8e3a87f7f7fa614bd3 100644 (file)
@@ -47,65 +47,6 @@ static void tr_init (TestResult *tr);
 static void suite_free (Suite *s);
 static void tcase_free (TCase *tc);
 
-#if HAVE_CONFIG_H
-#include <config.h>
-#endif
-#undef malloc
-#undef realloc
-#undef strsignal
-
-#include <sys/types.h>
-
-void *malloc (size_t n);
-void *realloc (void *p, size_t n);
-char *strsignal(int sig);
-
-void *rpl_malloc (size_t n);
-void *rpl_realloc (void *p, size_t n);
-static const char *rpl_strsignal(int sig);
-
-/* Allocate an N-byte block of memory from the heap. If N is zero,
-   allocate a 1-byte block. */
-void *
-rpl_malloc (size_t n)
-{
-  if (n == 0)
-    n = 1;
-  return malloc (n);
-} 
-
-/* AC_FUNC_REALLOC in configure defines realloc to rpl_realloc if
-   realloc(0,0) is NULL to make it GNU compatible and always return a
-   valid pointer, same for AC_FUNC_MALLOC, malloc, and rpl_malloc.
-   rpl means `replacement'.
-
-   If this ever turns out to be a problem, it might be easiest to just
-   kill the configure macro calls.
- */
-void *
-rpl_realloc (void *p, size_t n)
-{
-  if (n == 0)
-    n = 1;
-  if (p == 0)
-    return malloc (n);
-  return realloc (p, n);
-}
-
-/* We simply don't have strsignal on some platforms.  This function
-   should get used if AC_REPLACE_FUNCS([strsignal]) cannot find
-   something acceptable.  Note that Gnulib has a much much much more
-   advanced version of strsignal, but we don't really care.
-*/
-static const char *
-rpl_strsignal (int sig)
-{
-  static char signame[40];
-  
-  sprintf(signame, "SIG #%d", sig);
-  return signame;
-}
-
 Suite *suite_create (const char *name)
 {
   Suite *s;
diff --git a/src/malloc.c b/src/malloc.c
new file mode 100644 (file)
index 0000000..1996e0f
--- /dev/null
@@ -0,0 +1,19 @@
+/* AC_FUNC_MALLOC in configure defines malloc to rpl_malloc if
+   malloc (0) is NULL to provide GNU compatibility */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+#undef malloc
+
+#include <sys/types.h>
+
+void *malloc (size_t n);
+
+/* force malloc(0) to return a valid pointer */
+void *
+rpl_malloc (size_t n)
+{
+  if (n == 0)
+    n = 1;
+  return malloc (n);
+}
diff --git a/src/realloc.c b/src/realloc.c
new file mode 100644 (file)
index 0000000..d6f02e5
--- /dev/null
@@ -0,0 +1,21 @@
+/* AC_FUNC_REALLOC in configure defines realloc to rpl_realloc if
+   realloc (p, 0) is NULL to provide GNU compatibility */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+#undef realloc
+     
+#include <sys/types.h>
+     
+void *realloc (void *p, size_t n);
+     
+/* force realloc(p, 0) to return a valid pointer */
+void *
+rpl_realloc (void *p, size_t n)
+{
+  if (n == 0)
+    n = 1;
+  if (p == 0)
+    return malloc (n);
+  return realloc (p, n);
+}
diff --git a/src/strsignal.c b/src/strsignal.c
new file mode 100644 (file)
index 0000000..ad5bf61
--- /dev/null
@@ -0,0 +1,19 @@
+/* This file gets included if AC_REPLACE_FUNCS([strsignal]) cannot find the function. */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#if !HAVE_STRSIGNAL
+static const char *strsignal(int sig);
+#endif /* !HAVE_STRSIGNAL */
+
+/* Note that Gnulib has a much more advanced version of strsignal */
+static const char *
+strsignal (int sig)
+{
+  static char signame[40];
+  sprintf(signame, "SIG #%d", sig);
+  return signame;
+}