Merge from gnulib.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 8 Nov 2013 16:24:40 +0000 (08:24 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 8 Nov 2013 16:24:40 +0000 (08:24 -0800)
This incorporates:
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.

ChangeLog
lib/fpending.h
m4/extern-inline.m4
m4/fpending.m4
src/ChangeLog
src/gmalloc.c

index 05ab15e..f1be2c7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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  <eggert@cs.ucla.edu>
 
        Port to C11 aligned_alloc.
index 30d67fc..306a083 100644 (file)
@@ -24,6 +24,6 @@
 # include <stdio_ext.h>
 #endif
 
-#ifndef __fpending
+#if !HAVE_DECL___FPENDING
 size_t __fpending (FILE *) _GL_ATTRIBUTE_PURE;
 #endif
index e4454d8..9f93c29 100644 (file)
@@ -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__ \
index c8d9e8b..669105b 100644 (file)
@@ -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],
index fdb4b24..2a5c828 100644 (file)
@@ -16,6 +16,8 @@
 
 2013-11-08  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * 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,
index fc728ee..c50df25 100644 (file)
@@ -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 *