[Debian-med-packaging] Bug#852839: baitfisher: FTBFS (32-bit): mixes ::size_t and faststring::size_t

Aaron M. Ucko ucko at debian.org
Fri Jan 27 18:23:40 UTC 2017


Source: baitfisher
Version: 1.0+dfsg-1
Severity: important
Justification: fails to build from source

Builds of baitfisher for 32-bit architectures such as i386 have been
failing:

  range_functions.h: In member function 'bool CRangeList::add(faststring)':
  range_functions.h:596:31: error: invalid initialization of non-const reference of type 'faststring::size_t& {aka long unsigned int&}' from an rvalue of type 'faststring::size_t {aka long unsigned int}'

The issue appears to be that, for some reason, class faststring has
(https://anonscm.debian.org/cgit/debian-med/baitfisher.git/tree/faststring2.h#n128)

  // Shadow the "global" size_t typedef for this class.
    typedef unsigned long size_t;

but CRangeList::add uses the global size_t typedef, which is formally
unsigned int on 32-bit systems:

https://anonscm.debian.org/cgit/debian-med/baitfisher.git/tree/range_functions.h#n591

    size_t pos1=0, pos2, len=str.size();

Although the two types are de facto equivalent on 32-bit
architectures, C++ compilers insist on treating them as different.
(This problem doesn't occur on 64-bit architectures, on which both
size_t typedefs are unsigned long.)

Could you please take a look?

Thanks!

-- 
Aaron M. Ucko, KB1CJC (amu at alum.mit.edu, ucko at debian.org)
http://www.mit.edu/~amu/ | http://stuff.mit.edu/cgi/finger/?amu@monk.mit.edu



More information about the Debian-med-packaging mailing list