From 220a304ac3e1948e40ea76a82bc62bd81c2a6906 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 8 Nov 2013 08:24:40 -0800 Subject: [PATCH] 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. --- ChangeLog | 8 ++++++++ lib/fpending.h | 2 +- m4/extern-inline.m4 | 18 +++++++++++------- m4/fpending.m4 | 18 +++++++++++------- src/ChangeLog | 2 ++ src/gmalloc.c | 9 ++++----- 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 + + 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 * -- 2.20.1