Open Bug 942383 Opened 11 years ago Updated 2 years ago

NS_PRECONDITION predicates are shown with macros expanded

Categories

(Core :: XPCOM, defect)

x86_64
macOS
defect

Tracking

()

People

(Reporter: jruderman, Unassigned)

References

Details

(Keywords: regression)

I'm now seeing

###!!! ASSERTION: containing block height must be constrained: 'containingBlockHeight != nscoord(1 << 30)', file layout/generic/nsHTMLReflowState.cpp, line 1319

where the code is

NS_PRECONDITION(containingBlockHeight != NS_AUTOHEIGHT, "containing block height must be constrained");

This makes my fuzzer think it's a different assertion than the one it knows about, and it can also be ugly with more complex macros.

All of the assertions where I hit this are NS_PRECONDITION rather than NS_ASSERTION:

http://mxr.mozilla.org/mozilla-central/source/layout/generic/nsHTMLReflowState.cpp#1318
http://mxr.mozilla.org/mozilla-central/source/layout/forms/nsFieldSetFrame.cpp#426
http://mxr.mozilla.org/mozilla-central/source/layout/forms/nsHTMLButtonControlFrame.cpp#174

I think this is a regression from 
http://hg.mozilla.org/mozilla-central/rev/88b2741cd866
Flags: needinfo?(benjamin)
NS_PRECONDITION is now going through an extra layer of #define evaluation.

I *think* you can avoid evaluating by doing:
#define NS_PRECONDITION NS_ASSERTION
Probably yes. r=me for that change if it does the right thing, Jesse.
Flags: needinfo?(benjamin)
See Also: → 1457813
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.