mirror of
https://git.freebsd.org/ports.git
synced 2025-05-13 07:41:50 -04:00
Clang 19 has become more strict about initialization with undefined behavior, resulting in errors similar to: ./SimpleModule.h:126:40: error: in-class initializer for static data member is not a constant expression 126 | static const int kMinSignedValue = -1 << kScaleBits; | ~~~^~~~~~~~~~~~~ ./SimpleModule.h:176:22: note: in instantiation of template class 'signConverter<kInt8>' requested here 176 | transform<typename signConverter<Format>::signedToUnsigned>(src, dst, count); | ^ ./SimpleModule.h:183:5: note: in instantiation of function template specialization 'ConvertSign::convertSignedToUnsigned<kInt8>' requested here 183 | convertSignedToUnsigned<kInt8>(src, dst, count); | ^ This is because left-shifting negative values is undefined. Replace -1 with ~0u which results in the expected value. While here, add a few other patches to remove warnings about undefined left-shifts, and add support for the "make test" target. PR: 281477 Approved by: maintainer timeout (2 weeks) MFH: 2024Q3
11 lines
475 B
C++
11 lines
475 B
C++
--- libaudiofile/modules/SimpleModule.h.orig 2013-03-06 05:30:03 UTC
|
|
+++ libaudiofile/modules/SimpleModule.h
|
|
@@ -123,7 +123,7 @@ struct signConverter
|
|
typedef typename IntTypes<Format>::UnsignedType UnsignedType;
|
|
|
|
static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
|
|
- static const int kMinSignedValue = -1 << kScaleBits;
|
|
+ static const int kMinSignedValue = ~0u << kScaleBits;
|
|
|
|
struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
|
|
{
|