Fix exception when setting invalid bool value
This commit is contained in:
1 parent
f2d64d7676
commit
ed3239e4db
1 file changed
+20
-3
+20
-3
@@ -28,12 +28,26 @@ const CHANGE_FLAGS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function parseBool(v) {
|
||||||
|
v = "" + v;
|
||||||
|
if (v === "true" || v === "TRUE" || v === "True" || v === "1")
|
||||||
|
return true;
|
||||||
|
else if (v === "false" || v === "FALSE" || v === "False" || v === "0")
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function sanitizeParameterValue(parameterValue) {
|
function sanitizeParameterValue(parameterValue) {
|
||||||
if (parameterValue[0] != null) {
|
if (parameterValue[0] != null) {
|
||||||
switch (parameterValue[1]) {
|
switch (parameterValue[1]) {
|
||||||
case 'xsd:boolean':
|
case 'xsd:boolean':
|
||||||
if (typeof parameterValue[0] !== 'boolean') {
|
if (typeof parameterValue[0] !== 'boolean') {
|
||||||
parameterValue[0] = !!JSON.parse(parameterValue[0]);
|
let v = parseBool(parameterValue[0]);
|
||||||
|
if (v == null)
|
||||||
|
v = '' + parameterValue[0];
|
||||||
|
parameterValue[0] = v;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'xsd:string':
|
case 'xsd:string':
|
||||||
@@ -44,12 +58,15 @@ function sanitizeParameterValue(parameterValue) {
|
|||||||
case 'xsd:int':
|
case 'xsd:int':
|
||||||
case 'xsd:unsignedInt':
|
case 'xsd:unsignedInt':
|
||||||
if (typeof parameterValue[0] !== 'number') {
|
if (typeof parameterValue[0] !== 'number') {
|
||||||
parameterValue[0] = +parameterValue[0];
|
let v = parseInt(parameterValue[0]);
|
||||||
|
if (isNaN(v))
|
||||||
|
v = '' + parameterValue[0];
|
||||||
|
parameterValue[0] = v;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'xsd:dateTime':
|
case 'xsd:dateTime':
|
||||||
if (typeof parameterValue[0] !== 'number') {
|
if (typeof parameterValue[0] !== 'number') {
|
||||||
let v = +parameterValue[0];
|
let v = parseInt(parameterValue[0]);
|
||||||
if (isNaN(v)) {
|
if (isNaN(v)) {
|
||||||
v = Date.parse(parameterValue[0]);
|
v = Date.parse(parameterValue[0]);
|
||||||
if (isNaN(v))
|
if (isNaN(v))
|
||||||
|
|||||||
Reference in new issue
Block a user