Bugzilla Automation <bugzi...@freebsd.org> has asked freebsd-kde (Team)
<k...@freebsd.org> for maintainer-feedback:
Bug 272029: multimedia/phonon: fix build with clang 16
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272029



--- Description ---
Clang 16 has a new error about integer values being outside the valid
range for enum types, which shows up when building multimedia/phonon:

 
/wrkdirs/usr/ports/multimedia/phonon/work/.build/phonon/experimental/phonon4qt5
experimental_autogen/EWIEGA46WW/../../../../../phonon-4.11.1/phonon/experimenta
l/visualization.h:45:27:
error: integer value 4294967294 is outside the valid range of values [0, 7] for
the enumeration type 'ObjectDescriptionType' [-Wenum-constexpr-conversion]
  typedef
ObjectDescription<static_cast<Phonon::ObjectDescriptionType>(VisualizationType)
>
VisualizationDescription;
                            ^
 
/wrkdirs/usr/ports/multimedia/phonon/work/.build/phonon/experimental/phonon4qt5
experimental_autogen/EWIEGA46WW/../../../../../phonon-4.11.1/phonon/experimenta
l/visualization.h:46:32:
error: integer value 4294967294 is outside the valid range of values [0, 7] for
the enumeration type 'ObjectDescriptionType' [-Wenum-constexpr-conversion]
  typedef
ObjectDescriptionModel<static_cast<Phonon::ObjectDescriptionType>(Visualization
Type)>
VisualizationDescriptionModel;
                                 ^
 
/wrkdirs/usr/ports/multimedia/phonon/work/phonon-4.11.1/phonon/objectdescriptio
n.h:189:41:
error: integer value 4294967294 is outside the valid range of values [0, 7] for
the enumeration type 'ObjectDescriptionType' [-Wenum-constexpr-conversion]
          static inline ObjectDescription<T> fromIndex(int index) {
//krazy:exclude=inline
                                          ^
 
/wrkdirs/usr/ports/multimedia/phonon/work/phonon-4.11.1/phonon/objectdescriptio
n.h:260:45:
error: integer value 4294967294 is outside the valid range of values [0, 7] for
the enumeration type 'ObjectDescriptionType' [-Wenum-constexpr-conversion]
          friend class ObjectDescriptionModel<T>;
                                              ^

This is because enum ObjectDescriptionType only has 6 members, and
therefore only gets 3 bits allocated by default. In that case, values
like 4294967294 (0xfffffffe) do not fit in it.

Work around the problem by declaring enum ObjectDescriptionType to
explicitly be of type unsigned, so it can fit 32 bits.

Reply via email to