use vector::erase with std::remove_if

std::remove_if will only move elements around within the range it was
handed. In order to have the elements actually removed from the vector,
we need to erase() them.

Caught by clang-tidy:
/buildbot/src/googleplex-android/rvc-release/frameworks/av/media/codec2/vndk/util/C2InterfaceUtils.cpp:219:9:
warning: the value returned by this function should be used
[bugprone-unused-return-value]
(and 3 others)

Bug: 154665437
Test: TreeHugger
Change-Id: I9244baf7d6f46cce4c2d8f66fcf57b19c19d32ab
Merged-In: I9244baf7d6f46cce4c2d8f66fcf57b19c19d32ab
gugelfrei
George Burgess IV 4 years ago committed by Greg Kaiser
parent 718f96b3bb
commit 0c52b65211

@ -216,9 +216,14 @@ C2SupportedFlags<T> C2SupportedFlags<T>::limitedTo(const C2SupportedFlags<T> &li
if (limit.contains(minMask) && contains(minMask)) {
values[0] = minMask;
// keep only flags that are covered by limit
std::remove_if(values.begin(), values.end(), [&limit, minMask](const C2Value::Primitive &v) -> bool {
T value = v.ref<ValueType>() | minMask;
return value == minMask || !limit.contains(value); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit, minMask](
const C2Value::Primitive &v) -> bool {
T value = v.ref<ValueType>() | minMask;
return value == minMask ||
!limit.contains(value);
}),
values.end());
// we also need to do it vice versa
for (const C2Value::Primitive &v : _mValues) {
T value = v.ref<ValueType>() | minMask;
@ -264,24 +269,33 @@ bool C2SupportedValueSet<T>::contains(T value) const {
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}

Loading…
Cancel
Save