Browse Source

LibDSP: Fix potential slicing issue in volume_from_envelope

Use pointer or reference to avoid slicing from "PitchedEnvelope"
to "Envelope". This was found by SonarCloud.
Brian Gianforcaro 3 năm trước cách đây
mục cha
commit
55aecf5381

+ 1 - 1
Userland/Libraries/LibDSP/Envelope.h

@@ -50,7 +50,7 @@ struct Envelope {
 
     constexpr void reset() { envelope = -1; }
 
-    constexpr operator EnvelopeState()
+    constexpr operator EnvelopeState() const
     {
         if (!is_active())
             return EnvelopeState::Off;

+ 1 - 1
Userland/Libraries/LibDSP/Synthesizers.cpp

@@ -64,7 +64,7 @@ Signal Classic::process_impl(Signal const& input_signal)
 }
 
 // Linear ADSR envelope with no peak adjustment.
-double Classic::volume_from_envelope(Envelope envelope)
+double Classic::volume_from_envelope(Envelope const& envelope)
 {
     switch (static_cast<EnvelopeState>(envelope)) {
     case EnvelopeState::Off:

+ 1 - 1
Userland/Libraries/LibDSP/Synthesizers.h

@@ -49,7 +49,7 @@ public:
 private:
     virtual Signal process_impl(Signal const&) override;
 
-    double volume_from_envelope(Envelope);
+    double volume_from_envelope(Envelope const&);
     double wave_position(u8 note);
     double samples_per_cycle(u8 note);
     double sin_position(u8 note);