Avoid overloading on 32 bit architectures
authorJames Page james.page@ubuntu.com, Bernd Zeimetz <bzed@debian.org>
Tue, 21 Jan 2020 20:21:17 +0000 (20:21 +0000)
committerBernd Zeimetz <bzed@debian.org>
Tue, 21 Jan 2020 20:21:17 +0000 (20:21 +0000)
Forwarded: no

unsigned and size_t are equivalent on 32 bit architectures,
so only define the size_t based overload of advance on 64
bit architectures.
https://wiki.debian.org/ArchitectureSpecificsMemo

Gbp-Pq: Name 32bit-avoid-overloading.patch

src/include/buffer.h

index b8c78210eae0e81057f0396f91c1678ae4716b8a..e1d37729735d4472a3acf1c783142ce12e6d4417 100644 (file)
@@ -737,7 +737,12 @@ inline namespace v14_2_0 {
 
       void advance(int o) = delete;
       void advance(unsigned o);
+
+// unsigned and size_t are equivalent on 32bit architectures.
+// so casting is only needed when not on 32bit.
+#if defined(UINTPTR_MAX) && UINTPTR_MAX > 0xffffffff
       void advance(size_t o) { advance(static_cast<unsigned>(o)); }
+#endif
       void seek(unsigned o);
       char operator*() const;
       iterator_impl& operator++();