Commit 7a1284d5 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

Bug 26071 - Зависание браузера при вводе экспоненциального числа

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57899 954022d7-b5bf-4e40-9824-e11837661b57
parent af0e78b3
...@@ -53,6 +53,8 @@ var NumComporationOperators = ...@@ -53,6 +53,8 @@ var NumComporationOperators =
function getNumberParts(x) function getNumberParts(x)
{ {
var sig = SignType.Null; var sig = SignType.Null;
if (!isFinite(x))
x = 0;
if(x > 0) if(x > 0)
sig = SignType.Positive; sig = SignType.Positive;
else if(x < 0) else if(x < 0)
...@@ -2673,7 +2675,7 @@ FormatParser.prototype = ...@@ -2673,7 +2675,7 @@ FormatParser.prototype =
val = val.replace(".", "q");//заменяем на символ с которым не распознается, как в Excel val = val.replace(".", "q");//заменяем на символ с которым не распознается, как в Excel
val = val.replace(cultureInfo.NumberDecimalSeparator, "."); val = val.replace(cultureInfo.NumberDecimalSeparator, ".");
} }
return Asc.isNumber(val); return Asc.isNumberInfinity(val);
}, },
parseLocaleNumber: function (val, cultureInfo) { parseLocaleNumber: function (val, cultureInfo) {
if (null == cultureInfo) if (null == cultureInfo)
...@@ -2683,7 +2685,7 @@ FormatParser.prototype = ...@@ -2683,7 +2685,7 @@ FormatParser.prototype =
val = val.replace(".", "q");//заменяем на символ с которым не распознается, как в Excel val = val.replace(".", "q");//заменяем на символ с которым не распознается, как в Excel
val = val.replace(cultureInfo.NumberDecimalSeparator, "."); val = val.replace(cultureInfo.NumberDecimalSeparator, ".");
} }
return parseFloat(val); return val - 0;
}, },
parse: function (value, cultureInfo) parse: function (value, cultureInfo)
{ {
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
/** @const */ /** @const */
var kLeftLim1 = .999999999999999; var kLeftLim1 = .999999999999999;
var MAX_EXCEL_INT = 1e308;
var MIN_EXCEL_INT = -MAX_EXCEL_INT;
/** @const */ /** @const */
var kUndefinedL = "undefined"; var kUndefinedL = "undefined";
...@@ -833,6 +835,12 @@ ...@@ -833,6 +835,12 @@
return (valTrim - 0) == valTrim && valTrim.length > 0; return (valTrim - 0) == valTrim && valTrim.length > 0;
} }
function isNumberInfinity(val) {
var valTrim = trim(val);
var valInt = valTrim - 0;
return valInt == valTrim && valTrim.length > 0 && MIN_EXCEL_INT < valInt && valInt < MAX_EXCEL_INT;//
}
function arrayToLowerCase(array) { function arrayToLowerCase(array) {
var result = []; var result = [];
for (var i = 0, length = array.length; i < length; ++i) for (var i = 0, length = array.length; i < length; ++i)
...@@ -1507,6 +1515,7 @@ ...@@ -1507,6 +1515,7 @@
window["Asc"].isEqual = isEqual; window["Asc"].isEqual = isEqual;
window["Asc"].profileTime = profileTime; window["Asc"].profileTime = profileTime;
window["Asc"].isNumber = isNumber; window["Asc"].isNumber = isNumber;
window["Asc"].isNumberInfinity = isNumberInfinity;
window["Asc"].trim = trim; window["Asc"].trim = trim;
window["Asc"].extendClass = extendClass; window["Asc"].extendClass = extendClass;
window["Asc"].arrayToLowerCase = arrayToLowerCase; window["Asc"].arrayToLowerCase = arrayToLowerCase;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment