forked from mirrors/gecko-dev
Bug 1602862: Add checks for invalid StringClassFlags r=jld
Differential Revision: https://phabricator.services.mozilla.com/D99271
This commit is contained in:
parent
f8a731e34e
commit
ea0d4c8068
2 changed files with 9 additions and 2 deletions
|
|
@ -69,7 +69,10 @@ enum class StringDataFlags : uint16_t {
|
|||
INLINE = 1 << 4,
|
||||
|
||||
// mData points to a string literal; DataFlags::TERMINATED will also be set
|
||||
LITERAL = 1 << 5
|
||||
LITERAL = 1 << 5,
|
||||
|
||||
// used to check for invalid flags -- all bits above the last item
|
||||
INVALID_MASK = (uint16_t) ~((LITERAL << 1) - 1)
|
||||
};
|
||||
|
||||
// bits for mClassFlags
|
||||
|
|
@ -78,7 +81,9 @@ enum class StringClassFlags : uint16_t {
|
|||
// with nsTAutoStringN
|
||||
INLINE = 1 << 0,
|
||||
// |this| requires its buffer is null-terminated
|
||||
NULL_TERMINATED = 1 << 1
|
||||
NULL_TERMINATED = 1 << 1,
|
||||
// used to check for invalid flags -- all bits above the last item
|
||||
INVALID_MASK = (uint16_t) ~((NULL_TERMINATED << 1) - 1)
|
||||
};
|
||||
|
||||
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(StringDataFlags)
|
||||
|
|
|
|||
|
|
@ -1057,6 +1057,8 @@ class nsTSubstring : public mozilla::detail::nsTStringRepr<T> {
|
|||
|
||||
protected:
|
||||
void AssertValid() {
|
||||
MOZ_DIAGNOSTIC_ASSERT(!(this->mClassFlags & ClassFlags::INVALID_MASK));
|
||||
MOZ_DIAGNOSTIC_ASSERT(!(this->mDataFlags & DataFlags::INVALID_MASK));
|
||||
MOZ_ASSERT(!(this->mClassFlags & ClassFlags::NULL_TERMINATED) ||
|
||||
(this->mDataFlags & DataFlags::TERMINATED),
|
||||
"String classes whose static type guarantees a null-terminated "
|
||||
|
|
|
|||
Loading…
Reference in a new issue