Browse Source

A few tweaks to help the clang static analyser avoid false alarms.

tags/2021-05-28
jules 11 years ago
parent
commit
8809efcb7a
4 changed files with 30 additions and 20 deletions
  1. +14
    -14
      modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp
  2. +8
    -4
      modules/juce_core/containers/juce_Array.h
  3. +7
    -2
      modules/juce_core/containers/juce_OwnedArray.h
  4. +1
    -0
      modules/juce_core/containers/juce_ReferenceCountedArray.h

+ 14
- 14
modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp View File

@@ -133,31 +133,31 @@ public:
trackUnitsPerFrame = GetMovieTimeScale (movie) * samplesPerFrame trackUnitsPerFrame = GetMovieTimeScale (movie) * samplesPerFrame
/ GetMediaTimeScale (media); / GetMediaTimeScale (media);
OSStatus err = MovieAudioExtractionBegin (movie, 0, &extractor);
MovieAudioExtractionBegin (movie, 0, &extractor);
unsigned long output_layout_size; unsigned long output_layout_size;
err = MovieAudioExtractionGetPropertyInfo (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
0, &output_layout_size, 0);
OSStatus err = MovieAudioExtractionGetPropertyInfo (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
0, &output_layout_size, 0);
if (err != noErr) if (err != noErr)
return; return;
HeapBlock <AudioChannelLayout> qt_audio_channel_layout; HeapBlock <AudioChannelLayout> qt_audio_channel_layout;
qt_audio_channel_layout.calloc (output_layout_size, 1); qt_audio_channel_layout.calloc (output_layout_size, 1);
err = MovieAudioExtractionGetProperty (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
output_layout_size, qt_audio_channel_layout, 0);
MovieAudioExtractionGetProperty (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
output_layout_size, qt_audio_channel_layout, 0);
qt_audio_channel_layout[0].mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; qt_audio_channel_layout[0].mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
err = MovieAudioExtractionSetProperty (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
output_layout_size,
qt_audio_channel_layout);
MovieAudioExtractionSetProperty (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio,
kQTMovieAudioExtractionAudioPropertyID_AudioChannelLayout,
output_layout_size,
qt_audio_channel_layout);
err = MovieAudioExtractionGetProperty (extractor, err = MovieAudioExtractionGetProperty (extractor,
kQTPropertyClass_MovieAudioExtraction_Audio, kQTPropertyClass_MovieAudioExtraction_Audio,


+ 8
- 4
modules/juce_core/containers/juce_Array.h View File

@@ -279,8 +279,7 @@ public:
inline ElementType getFirst() const inline ElementType getFirst() const
{ {
const ScopedLockType lock (getLock()); const ScopedLockType lock (getLock());
return (numUsed > 0) ? data.elements [0]
: ElementType();
return numUsed > 0 ? data.elements[0] : ElementType();
} }
/** Returns the last element in the array, or a default value if the array is empty. /** Returns the last element in the array, or a default value if the array is empty.
@@ -290,8 +289,7 @@ public:
inline ElementType getLast() const inline ElementType getLast() const
{ {
const ScopedLockType lock (getLock()); const ScopedLockType lock (getLock());
return (numUsed > 0) ? data.elements [numUsed - 1]
: ElementType();
return numUsed > 0 ? data.elements[numUsed - 1] : ElementType();
} }
/** Returns a pointer to the actual array data. /** Returns a pointer to the actual array data.
@@ -317,6 +315,11 @@ public:
*/ */
inline ElementType* end() const noexcept inline ElementType* end() const noexcept
{ {
#if JUCE_DEBUG
if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy)
return data.elements;
#endif
return data.elements + numUsed; return data.elements + numUsed;
} }
@@ -519,6 +522,7 @@ public:
if (isPositiveAndBelow (indexToChange, numUsed)) if (isPositiveAndBelow (indexToChange, numUsed))
{ {
jassert (data.elements != nullptr);
data.elements [indexToChange] = newValue; data.elements [indexToChange] = newValue;
} }
else if (indexToChange >= 0) else if (indexToChange >= 0)


+ 7
- 2
modules/juce_core/containers/juce_OwnedArray.h View File

@@ -167,7 +167,7 @@ public:
{ {
const ScopedLockType lock (getLock()); const ScopedLockType lock (getLock());
return numUsed > 0 ? data.elements [0] return numUsed > 0 ? data.elements [0]
: static_cast <ObjectClass*> (nullptr);
: static_cast<ObjectClass*> (nullptr);
} }
/** Returns a pointer to the last object in the array. /** Returns a pointer to the last object in the array.
@@ -179,7 +179,7 @@ public:
{ {
const ScopedLockType lock (getLock()); const ScopedLockType lock (getLock());
return numUsed > 0 ? data.elements [numUsed - 1] return numUsed > 0 ? data.elements [numUsed - 1]
: static_cast <ObjectClass*> (nullptr);
: static_cast<ObjectClass*> (nullptr);
} }
/** Returns a pointer to the actual array data. /** Returns a pointer to the actual array data.
@@ -205,6 +205,11 @@ public:
*/ */
inline ObjectClass** end() const noexcept inline ObjectClass** end() const noexcept
{ {
#if JUCE_DEBUG
if (data.elements == nullptr || numUsed <= 0) // (to keep static analysers happy)
return data.elements;
#endif
return data.elements + numUsed; return data.elements + numUsed;
} }


+ 1
- 0
modules/juce_core/containers/juce_ReferenceCountedArray.h View File

@@ -180,6 +180,7 @@ public:
inline ObjectClass* getObjectPointer (const int index) const noexcept inline ObjectClass* getObjectPointer (const int index) const noexcept
{ {
const ScopedLockType lock (getLock()); const ScopedLockType lock (getLock());
jassert (isPositiveAndBelow (index, numUsed));
return isPositiveAndBelow (index, numUsed) ? data.elements [index] return isPositiveAndBelow (index, numUsed) ? data.elements [index]
: nullptr; : nullptr;
} }


Loading…
Cancel
Save