diff options
Diffstat (limited to 'src/mongo/base')
-rw-r--r-- | src/mongo/base/parse_number.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/base/parse_number.cpp b/src/mongo/base/parse_number.cpp index 675c2d82e41..0ecb797670f 100644 --- a/src/mongo/base/parse_number.cpp +++ b/src/mongo/base/parse_number.cpp @@ -128,8 +128,14 @@ namespace mongo { NumberType digitValue = NumberType(_digitValue(str[i])); if (int(digitValue) >= base) return Status(ErrorCodes::FailedToParse, "Bad digit"); + +// MSVC: warning C4146: unary minus operator applied to unsigned type, result still unsigned +// This code is statically known to be dead when NumberType is unsigned, so the warning is not real +#pragma warning(push) +#pragma warning(disable:4146) if ((NumberType(limits::min() / base) > n) || ((limits::min() - NumberType(n * base)) > -digitValue)) { +#pragma warning(pop) return Status(ErrorCodes::FailedToParse, "Underflow"); } |