Commit bb97f680 authored by Nick Mathewson's avatar Nick Mathewson 🥔
Browse files

Merge branch 'bug22801_028' into maint-0.2.9

parents ec9c6d77 53610322
Loading
Loading
Loading
Loading

changes/bug22801

0 → 100644
+5 −0
Original line number Diff line number Diff line
  o Minor bugfixes (compilation):
    - When building with certain versions the mingw C header files, avoid
      float-conversion warnings when calling the C functions isfinite(),
      isnan(), and signbit(). Fixes bug 22801; bugfix on 0.2.8.1-alpha.
+12 −0
Original line number Diff line number Diff line
@@ -5695,6 +5695,15 @@ clamp_double_to_int64(double number)
{
  int exponent;

#if defined(__MINGW32__) || defined(__MINGW64__)
/*
  Mingw's math.h uses gcc's __builtin_choose_expr() facility to declare
  isnan, isfinite, and signbit.  But as implemented in at least some
  versions of gcc, __builtin_choose_expr() can generate type warnings
  even from branches that are not taken.  So, suppress those warnings.
*/
DISABLE_GCC_WARNING(float-conversion)
#endif
  /* NaN is a special case that can't be used with the logic below. */
  if (isnan(number)) {
    return 0;
@@ -5720,6 +5729,9 @@ clamp_double_to_int64(double number)

  /* Handle infinities and finite numbers with magnitude >= 2^63. */
  return signbit(number) ? INT64_MIN : INT64_MAX;
#if defined(__MINGW32__) || defined(__MINGW64__)
ENABLE_GCC_WARNING(float-conversion)
#endif
}

/** Return a uint64_t value from <b>a</b> in network byte order. */