From: Paul Eggert Date: Fri, 8 Nov 2013 16:24:40 +0000 (-0800) Subject: Merge from gnulib. X-Git-Url: http://git.hcoop.net/bpt/emacs.git/commitdiff_plain/220a304ac3e1948e40ea76a82bc62bd81c2a6906 Merge from gnulib. 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. --- diff --git a/ChangeLog b/ChangeLog index 05ab15e0da..f1be2c7d65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-11-08 Paul Eggert + + 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 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 #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., . + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . 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 + #if HAVE_STDIO_EXT_H + # include + #endif + ' AC_CACHE_CHECK([for __fpending], [gl_cv_func___fpending], [ AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include - #if HAVE_STDIO_EXT_H - # include - #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 + * 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 *