aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--lib/fpending.h2
-rw-r--r--m4/extern-inline.m418
-rw-r--r--m4/fpending.m418
-rw-r--r--src/ChangeLog2
-rw-r--r--src/gmalloc.c9
6 files changed, 37 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 05ab15e0da..f1be2c7d65 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-08 Paul Eggert <[email protected]>
+
+ Merge from gnulib, incorporating:
+ 2013-11-08 extern-inline: port better to OS X 10.9
+ 2013-11-08 fpending: fix regression on DragonFly BSD
+ * lib/fpending.h, m4/extern-inline.m4, m4/fpending.m4:
+ Update from gnulib.
+
2013-11-07 Paul Eggert <[email protected]>
Port to C11 aligned_alloc.
diff --git a/lib/fpending.h b/lib/fpending.h
index 30d67fcd74..306a083e34 100644
--- a/lib/fpending.h
+++ b/lib/fpending.h
@@ -24,6 +24,6 @@
# include <stdio_ext.h>
#endif
-#ifndef __fpending
+#if !HAVE_DECL___FPENDING
size_t __fpending (FILE *) _GL_ATTRIBUTE_PURE;
#endif
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index e4454d8fe3..9f93c29e4d 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -1,4 +1,3 @@
-# extern-inline.m4 serial 2
dnl 'extern inline' a la ISO C99.
dnl Copyright 2012-2013 Free Software Foundation, Inc.
@@ -20,15 +19,20 @@ AC_DEFUN([gl_EXTERN_INLINE],
'reference to static identifier "f" in extern inline function'.
This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
- Suppress the use of extern inline on problematic Apple configurations, as
- Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
+ Suppress the use of extern inline on problematic Apple configurations.
+ OS X 10.8 and earlier mishandle it; see, e.g.,
<http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
+ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+ for clang but remains for g++; see <http://trac.macports.org/ticket/41033>.
Perhaps Apple will fix this some day. */
#if (defined __APPLE__ \
- && ((! defined _DONT_USE_CTYPE_INLINE_ \
- && (defined __GNUC__ || defined __cplusplus)) \
- || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
- && defined __GNUC__ && ! defined __cplusplus)))
+ && (defined __header_inline \
+ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+ && ! defined __clang__) \
+ : ((! defined _DONT_USE_CTYPE_INLINE_ \
+ && (defined __GNUC__ || defined __cplusplus)) \
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ && defined __GNUC__ && ! defined __cplusplus))))
# define _GL_EXTERN_INLINE_APPLE_BUG
#endif
#if ((__GNUC__ \
diff --git a/m4/fpending.m4 b/m4/fpending.m4
index c8d9e8b7ba..669105b9b5 100644
--- a/m4/fpending.m4
+++ b/m4/fpending.m4
@@ -1,4 +1,4 @@
-# serial 20
+# serial 21
# Copyright (C) 2000-2001, 2004-2013 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
@@ -16,19 +16,23 @@ dnl we have to grub around in the FILE struct.
AC_DEFUN([gl_FUNC_FPENDING],
[
AC_CHECK_HEADERS_ONCE([stdio_ext.h])
+ fp_headers='
+ #include <stdio.h>
+ #if HAVE_STDIO_EXT_H
+ # include <stdio_ext.h>
+ #endif
+ '
AC_CACHE_CHECK([for __fpending], [gl_cv_func___fpending],
[
AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <stdio.h>
- #if HAVE_STDIO_EXT_H
- # include <stdio_ext.h>
- #endif
- ]],
+ [AC_LANG_PROGRAM([$fp_headers],
[[return ! __fpending (stdin);]])],
[gl_cv_func___fpending=yes],
[gl_cv_func___fpending=no])
])
+ if test $gl_cv_func___fpending = yes; then
+ AC_CHECK_DECLS([__fpending], [], [], [$fp_headers])
+ fi
])
AC_DEFUN([gl_PREREQ_FPENDING],
diff --git a/src/ChangeLog b/src/ChangeLog
index fdb4b24233..2a5c828578 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -16,6 +16,8 @@
2013-11-08 Paul Eggert <[email protected]>
+ * gmalloc.c (special_realloc, calloc, mallochook): Use tail calls.
+
* chartab.c (make_sub_char_table): Fix size typo (Bug#15825).
This bug was introduced in my 2013-06-21 change, and caused
struct Lisp_Sub_Char_Table objects to be given too many slots,
diff --git a/src/gmalloc.c b/src/gmalloc.c
index fc728eeea7..c50df25cd4 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -1307,8 +1307,8 @@ special_realloc (void *ptr, size_t size)
type == 0 ? bss_sbrk_heapinfo[block].busy.info.size * BLOCKSIZE
: (size_t) 1 << type;
result = _malloc_internal_nolock (size);
- if (result != NULL)
- memcpy (result, ptr, min (oldsize, size));
+ if (result)
+ return memcpy (result, ptr, min (oldsize, size));
return result;
}
#endif
@@ -1501,7 +1501,7 @@ calloc (size_t nmemb, size_t size)
result = malloc (bytes);
if (result)
- memset (result, 0, bytes);
+ return memset (result, 0, bytes);
return result;
}
/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
@@ -1814,8 +1814,7 @@ mallochook (size_t size)
hdr->size = size;
hdr->magic = MAGICWORD;
((char *) &hdr[1])[size] = MAGICBYTE;
- memset (hdr + 1, MALLOCFLOOD, size);
- return hdr + 1;
+ return memset (hdr + 1, MALLOCFLOOD, size);
}
static void *