Bug 1299384 - Use MOZ_MUST_USE with NS_warn_if_impl(). r=erahm.

This change avoids lots of false positives for Coverity's CHECKED_RETURN
warning, caused by NS_WARN_IF's current use in both statement-style and
expression-style.

In the case where the code within the NS_WARN_IF has side-effects, I made the
following change.

> NS_WARN_IF(NS_FAILED(FunctionWithSideEffects()));
> -->
> Unused << NS_WARN_IF(NS_FAILED(FunctionWithSideEffects()));

In the case where the code within the NS_WARN_IF lacks side-effects, I made the
following change.

> NS_WARN_IF(!condWithoutSideEffects);
> -->
> NS_WARNING_ASSERTION(condWithoutSideEffects, "msg");

This has two improvements.
- The condition is not evaluated in non-debug builds.
- The sense of the condition is inverted to the familiar "this condition should
  be true" sense used in assertions.

A common variation on the side-effect-free case is the following.

> nsresult rv = Fn();
> NS_WARN_IF_(NS_FAILED(rv));
> -->
> DebugOnly<nsresult rv> = Fn();
> NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Fn failed");
This commit is contained in:
Nicholas Nethercote
2016-09-02 17:12:24 +10:00
parent 7d8664f92c
commit b5810a1eb4
98 changed files with 464 additions and 378 deletions

View File

@@ -865,8 +865,8 @@ ProtocolParserProtobuf::ProcessOneResponse(const ListUpdateResponse& aResponse)
nsCString state(aResponse.new_client_state().c_str(),
aResponse.new_client_state().size());
NS_DispatchToMainThread(NS_NewRunnableFunction([listName, state] () {
nsresult rv = SaveStateToPref(listName, state);
NS_WARN_IF(NS_FAILED(rv));
DebugOnly<nsresult> rv = SaveStateToPref(listName, state);
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "SaveStateToPref failed");
}));
PARSER_LOG(("==== Update for threat type '%d' ====", aResponse.threat_type()));