From: Alanscut Date: Wed, 20 May 2020 07:13:48 +0000 (+0800) Subject: fix issue #5075 Remove destructive judgment X-Git-Tag: 2.30.0~19^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08084a891f3b5aba12a67aba80884c52cb3be4d8;p=thirdparty%2Fmoment.git fix issue #5075 Remove destructive judgment --- diff --git a/src/lib/create/valid.js b/src/lib/create/valid.js index b25c7d116..08c62a51a 100644 --- a/src/lib/create/valid.js +++ b/src/lib/create/valid.js @@ -4,24 +4,23 @@ import getParsingFlags from '../create/parsing-flags'; import some from '../utils/some'; export function isValid(m) { - if (m._isValid == null) { + var isNowValid = (m._d && !isNaN(m._d.getTime())); + if (isNowValid) { var flags = getParsingFlags(m), parsedParts = some.call(flags.parsedDateParts, function (i) { return i != null; - }), - isNowValid = - !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidEra && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - + }); + isNowValid = + flags.overflow < 0 && + !flags.empty && + !flags.invalidEra && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { isNowValid = isNowValid && @@ -29,12 +28,11 @@ export function isValid(m) { flags.unusedTokens.length === 0 && flags.bigHour === undefined; } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } else { - return isNowValid; - } + } + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } else { + return isNowValid; } return m._isValid; } diff --git a/src/test/moment/is_valid.js b/src/test/moment/is_valid.js index 6da382303..600c37d36 100644 --- a/src/test/moment/is_valid.js +++ b/src/test/moment/is_valid.js @@ -561,3 +561,10 @@ test('format locale', function (assert) { assert.ok(moment(a[i][0], a[i][1], a[i][2]).isValid()); } }); + +test('destructive operation', function (assert) { + assert.equal(moment('2018-05-15').add(100, 'years').isValid(), true, 'add 100 years is valid'); + assert.equal(moment('2018-05-15').add(1000000, 'years').isValid(), false, 'add 1000000 years is invalid'); + assert.equal(moment('2018-05-15').subtract(100, 'years').isValid(), true, 'subtract 100 years is valid'); + assert.equal(moment('2018-05-15').subtract(1000000, 'years').isValid(), false, 'subtract 1000000 years is invalid'); +})