]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix statistics for x86 Windows builds
authorMichał Kępień <michal@isc.org>
Fri, 7 Jun 2019 13:21:43 +0000 (15:21 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 20 Jun 2019 15:49:25 +0000 (17:49 +0200)
Using atomic_int_fast64_t variables with atomic functions on x86 does
not cause Visual Studio to report build errors, but such operations
yield useless results.  Since the isc_stat_t type is unconditionally
typedef'd to atomic_int_fast64_t, any code performing atomic operations
on isc_stat_t variables is broken in x86 Windows builds.  Fix by using
the atomic_int_fast32_t type for isc_stat_t in x86 Windows builds.

doc/arm/Bv9ARM-book.xml
lib/isc/stats.c

index cc9921bcfca1904e5201e16a32ddc1d71cf08f88..4a27aa80244f8712167d6274431b8259fde93388 100644 (file)
@@ -15352,6 +15352,15 @@ HOST-127.EXAMPLE. MX 0 .
            <acronym>BIND</acronym> 8 statistics, if applicable.
          </para>
 
+         <para>
+           Note: BIND statistics counters are signed 64-bit values on
+           all platforms except one: 32-bit Windows, where they are
+           signed 32-bit values.  Given that 32-bit values have a
+           vastly smaller range than 64-bit values, BIND statistics
+           counters in 32-bit Windows builds overflow significantly
+           more quickly than on all other platforms.
+         </para>
+
          <section xml:id="stats_counters"><info><title>Name Server Statistics Counters</title></info>
 
            <informaltable colsep="0" rowsep="0">
index 883c1c373b19d9cf8d2b0d245175a56c10346ca7..123c6dff97def8926ad33e796c90f0281ef16d43 100644 (file)
 #define ISC_STATS_MAGIC                        ISC_MAGIC('S', 't', 'a', 't')
 #define ISC_STATS_VALID(x)             ISC_MAGIC_VALID(x, ISC_STATS_MAGIC)
 
+#if defined(_WIN32) && !defined(_WIN64)
+typedef atomic_int_fast32_t isc_stat_t;
+#else
 typedef atomic_int_fast64_t isc_stat_t;
+#endif
 
 struct isc_stats {
        unsigned int            magic;