Skip to content

Commit c1eaf34

Browse files
committed
fix($parse): Handle sign of -undefined consistently
When csp is disabled, evaluating `-undefined` is `-0` and when csp is enabled the evaluation is `0`. In most cases this is not an issue as `0 === -0`, but there is an edge case as `1/0 === Infinity` and `1/-0 === -Infinity` Close: angular#14451
1 parent 997f482 commit c1eaf34

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/ng/parse.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1516,7 +1516,7 @@ ASTInterpreter.prototype = {
15161516
if (isDefined(arg)) {
15171517
arg = -arg;
15181518
} else {
1519-
arg = 0;
1519+
arg = -0;
15201520
}
15211521
return context ? {value: arg} : arg;
15221522
};

test/ng/parseSpec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1755,7 +1755,7 @@ describe('parser', function() {
17551755
expect(scope.$eval("+'1'")).toEqual(+'1');
17561756
expect(scope.$eval("-'1'")).toEqual(-'1');
17571757
expect(scope.$eval("+undefined")).toEqual(0);
1758-
expect(scope.$eval("-undefined")).toBe(0);
1758+
expect(scope.$eval("-undefined")).toEqual(-0);
17591759
expect(scope.$eval("+null")).toEqual(+null);
17601760
expect(scope.$eval("-null")).toEqual(-null);
17611761
expect(scope.$eval("+false")).toEqual(+false);

0 commit comments

Comments
 (0)