Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

configure.in

  • Tom Lane's avatar
    4b505c26
    Cope if platform declares mbstowcs_l(), but not locale_t, in <xlocale.h>. · 4b505c26
    Tom Lane authored
    Previously, we included <xlocale.h> only if necessary to get the definition
    of type locale_t.  According to notes in PGAC_TYPE_LOCALE_T, this is
    important because on some versions of glibc that file supplies an
    incompatible declaration of locale_t.  (This info may be obsolete, because
    on my RHEL6 box that seems to be the *only* definition of locale_t; but
    there may still be glibc's in the wild for which it's a live concern.)
    
    It turns out though that on FreeBSD and maybe other BSDen, you can get
    locale_t from stdlib.h or locale.h but mbstowcs_l() and friends only from
    <xlocale.h>.  This was leaving us compiling calls to mbstowcs_l() and
    friends with no visible prototype, which causes a warning and could
    possibly cause actual trouble, since it's not declared to return int.
    
    Hence, adjust the configure checks so that we'll include <xlocale.h>
    either if it's necessary to get type locale_t or if it's necessary to
    get a declaration of mbstowcs_l().
    
    Report and patch by Aleksander Alekseev, somewhat whacked around by me.
    Back-patch to all supported branches, since we have been using
    mbstowcs_l() since 9.1.
    4b505c26
    History
    Cope if platform declares mbstowcs_l(), but not locale_t, in <xlocale.h>.
    Tom Lane authored
    Previously, we included <xlocale.h> only if necessary to get the definition
    of type locale_t.  According to notes in PGAC_TYPE_LOCALE_T, this is
    important because on some versions of glibc that file supplies an
    incompatible declaration of locale_t.  (This info may be obsolete, because
    on my RHEL6 box that seems to be the *only* definition of locale_t; but
    there may still be glibc's in the wild for which it's a live concern.)
    
    It turns out though that on FreeBSD and maybe other BSDen, you can get
    locale_t from stdlib.h or locale.h but mbstowcs_l() and friends only from
    <xlocale.h>.  This was leaving us compiling calls to mbstowcs_l() and
    friends with no visible prototype, which causes a warning and could
    possibly cause actual trouble, since it's not declared to return int.
    
    Hence, adjust the configure checks so that we'll include <xlocale.h>
    either if it's necessary to get type locale_t or if it's necessary to
    get a declaration of mbstowcs_l().
    
    Report and patch by Aleksander Alekseev, somewhat whacked around by me.
    Back-patch to all supported branches, since we have been using
    mbstowcs_l() since 9.1.