summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xfa/fxfa/fm2js/xfa_fm2jscontext.cpp944
1 files changed, 476 insertions, 468 deletions
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
index cfe5bd6135..53ccf0b5da 100644
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
@@ -4780,23 +4780,23 @@ void CXFA_FM2JSContext::TrillionUS(const CFX_ByteStringC& szData,
"Sixty", "Seventy", "Eighty", "Ninety"};
CFX_ByteStringC pComm[] = {" Hundred ", " Thousand ", " Million ",
" Billion ", "Trillion"};
- int32_t iComm = 0;
const FX_CHAR* pData = szData.c_str();
int32_t iLength = szData.GetLength();
- if (iLength > 12) {
+ int32_t iComm = 0;
+ if (iLength > 12)
iComm = 4;
- } else if (iLength > 9) {
+ else if (iLength > 9)
iComm = 3;
- } else if (iLength > 6) {
+ else if (iLength > 6)
iComm = 2;
- } else if (iLength > 3) {
+ else if (iLength > 3)
iComm = 1;
- }
- int32_t iIndex = 0;
+
int32_t iFirstCount = iLength % 3;
- if (iFirstCount == 0) {
+ if (iFirstCount == 0)
iFirstCount = 3;
- }
+
+ int32_t iIndex = 0;
if (iFirstCount == 3) {
if (pData[iIndex] != '0') {
strBuf << pCapUnits[pData[iIndex] - '0'];
@@ -4871,95 +4871,46 @@ void CXFA_FM2JSContext::WordUS(const CFX_ByteStringC& szData,
CFX_ByteTextBuf& strBuf) {
const FX_CHAR* pData = szData.c_str();
int32_t iLength = szData.GetLength();
- switch (iStyle) {
- case 0: {
- int32_t iIndex = 0;
- while (iIndex < iLength) {
- if (pData[iIndex] == '.') {
- break;
- }
- ++iIndex;
- }
- iLength = iIndex;
- iIndex = 0;
- int32_t iCount = 0;
- while (iIndex < iLength) {
- iCount = (iLength - iIndex) % 12;
- if (!iCount && iLength - iIndex > 0) {
- iCount = 12;
- }
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf);
- iIndex += iCount;
- if (iIndex < iLength) {
- strBuf << " Trillion ";
- }
- }
- } break;
- case 1: {
- int32_t iIndex = 0;
- while (iIndex < iLength) {
- if (pData[iIndex] == '.') {
- break;
- }
- ++iIndex;
- }
- iLength = iIndex;
- iIndex = 0;
- int32_t iCount = 0;
- while (iIndex < iLength) {
- iCount = (iLength - iIndex) % 12;
- if (!iCount && iLength - iIndex > 0) {
- iCount = 12;
- }
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf);
- iIndex += iCount;
- if (iIndex < iLength) {
- strBuf << " Trillion ";
- }
- }
- strBuf << " Dollars";
- } break;
- case 2: {
- int32_t iIndex = 0;
- while (iIndex < iLength) {
- if (pData[iIndex] == '.') {
- break;
- }
- ++iIndex;
- }
- int32_t iInteger = iIndex;
- iIndex = 0;
- int32_t iCount = 0;
- while (iIndex < iInteger) {
- iCount = (iInteger - iIndex) % 12;
- if (!iCount && iLength - iIndex > 0) {
- iCount = 12;
- }
- TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf);
- iIndex += iCount;
- if (iIndex < iInteger) {
- strBuf << " Trillion ";
- }
- }
- strBuf << " Dollars";
- if (iInteger < iLength) {
- strBuf << " And ";
- iIndex = iInteger + 1;
- while (iIndex < iLength) {
- int32_t iSize = (iLength - iIndex) % 12;
- if (!iSize && iLength - iIndex > 0)
- iSize = 12;
- TrillionUS(CFX_ByteStringC(pData + iIndex, iSize), strBuf);
- iIndex += iSize;
- if (iIndex < iLength) {
- strBuf << " Trillion ";
- }
- }
- strBuf << " Cents";
- }
- } break;
- default:
+ if (iStyle < 0 || iStyle > 2) {
+ return;
+ }
+
+ int32_t iIndex = 0;
+ while (iIndex < iLength) {
+ if (pData[iIndex] == '.')
break;
+ ++iIndex;
+ }
+ int32_t iInteger = iIndex;
+ iIndex = 0;
+ while (iIndex < iInteger) {
+ int32_t iCount = (iInteger - iIndex) % 12;
+ if (!iCount && iInteger - iIndex > 0)
+ iCount = 12;
+
+ TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf);
+ iIndex += iCount;
+ if (iIndex < iInteger)
+ strBuf << " Trillion ";
+ }
+
+ if (iStyle > 0)
+ strBuf << " Dollars";
+
+ if (iStyle > 1 && iInteger < iLength) {
+ strBuf << " And ";
+ iIndex = iInteger + 1;
+ while (iIndex < iLength) {
+ int32_t iCount = (iLength - iIndex) % 12;
+ if (!iCount && iLength - iIndex > 0)
+ iCount = 12;
+
+ TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf);
+ iIndex += iCount;
+ if (iIndex < iLength)
+ strBuf << " Trillion ";
+ }
+ strBuf << " Cents";
}
}
@@ -4968,32 +4919,33 @@ void CXFA_FM2JSContext::Get(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
- if (args.GetLength() == 1) {
- CXFA_Document* pDoc = pContext->GetDocument();
- if (!pDoc) {
- return;
- }
- IXFA_AppProvider* pAppProvider =
- pDoc->GetParser()->GetNotify()->GetAppProvider();
- if (!pAppProvider) {
- return;
- }
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- CFX_ByteString urlString;
- ValueToUTF8String(argOne.get(), urlString);
- IFX_FileRead* pFile = pAppProvider->DownloadURL(
- CFX_WideString::FromUTF8(urlString.AsStringC()));
- if (pFile) {
- int32_t size = pFile->GetSize();
- uint8_t* pData = FX_Alloc(uint8_t, size);
- pFile->ReadBlock(pData, size);
- args.GetReturnValue()->SetString(CFX_ByteStringC(pData, size));
- FX_Free(pData);
- pFile->Release();
- }
- } else {
+ if (args.GetLength() != 1) {
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Get");
+ return;
}
+
+ CXFA_Document* pDoc = pContext->GetDocument();
+ if (!pDoc)
+ return;
+
+ IXFA_AppProvider* pAppProvider =
+ pDoc->GetParser()->GetNotify()->GetAppProvider();
+ if (!pAppProvider)
+ return;
+
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ CFX_ByteString urlString;
+ ValueToUTF8String(argOne.get(), urlString);
+ IFX_FileRead* pFile = pAppProvider->DownloadURL(
+ CFX_WideString::FromUTF8(urlString.AsStringC()));
+ if (!pFile)
+ return;
+
+ int32_t size = pFile->GetSize();
+ std::unique_ptr<uint8_t> pData(FX_Alloc(uint8_t, size));
+ pFile->ReadBlock(pData.get(), size);
+ args.GetReturnValue()->SetString(CFX_ByteStringC(pData.get(), size));
+ pFile->Release();
}
// static
@@ -5002,54 +4954,60 @@ void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis,
CFXJSE_Arguments& args) {
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
int32_t argc = args.GetLength();
- if ((argc >= 2) && (argc <= 5)) {
- CXFA_Document* pDoc = pContext->GetDocument();
- if (!pDoc) {
- return;
- }
- IXFA_AppProvider* pAppProvider =
- pDoc->GetParser()->GetNotify()->GetAppProvider();
- if (!pAppProvider) {
- return;
- }
- CFX_ByteString bsURL;
- CFX_ByteString bsData;
- CFX_ByteString bsContentType;
- CFX_ByteString bsEncode;
- CFX_ByteString bsHeader;
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- ValueToUTF8String(argOne.get(), bsURL);
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
- ValueToUTF8String(argTwo.get(), bsData);
- if (argc > 2) {
- std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
- ValueToUTF8String(argThree.get(), bsContentType);
- }
- if (argc > 3) {
- std::unique_ptr<CFXJSE_Value> argFour = GetSimpleValue(pThis, args, 3);
- ValueToUTF8String(argFour.get(), bsEncode);
- }
- if (argc > 4) {
- std::unique_ptr<CFXJSE_Value> argFive = GetSimpleValue(pThis, args, 4);
- ValueToUTF8String(argFive.get(), bsHeader);
- }
- CFX_WideString decodedResponse;
- FX_BOOL bFlags = pAppProvider->PostRequestURL(
- CFX_WideString::FromUTF8(bsURL.AsStringC()),
- CFX_WideString::FromUTF8(bsData.AsStringC()),
- CFX_WideString::FromUTF8(bsContentType.AsStringC()),
- CFX_WideString::FromUTF8(bsEncode.AsStringC()),
- CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse);
- if (bFlags) {
- args.GetReturnValue()->SetString(
- FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength())
- .AsStringC());
- } else {
- pContext->ThrowException(XFA_IDS_SERVER_DENY);
- }
- } else {
+ if (argc < 2 || argc > 5) {
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Post");
+ return;
+ }
+
+ CXFA_Document* pDoc = pContext->GetDocument();
+ if (!pDoc)
+ return;
+
+ IXFA_AppProvider* pAppProvider =
+ pDoc->GetParser()->GetNotify()->GetAppProvider();
+ if (!pAppProvider)
+ return;
+
+ CFX_ByteString bsURL;
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ ValueToUTF8String(argOne.get(), bsURL);
+
+ CFX_ByteString bsData;
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
+ ValueToUTF8String(argTwo.get(), bsData);
+
+ CFX_ByteString bsContentType;
+ if (argc > 2) {
+ std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
+ ValueToUTF8String(argThree.get(), bsContentType);
+ }
+
+ CFX_ByteString bsEncode;
+ if (argc > 3) {
+ std::unique_ptr<CFXJSE_Value> argFour = GetSimpleValue(pThis, args, 3);
+ ValueToUTF8String(argFour.get(), bsEncode);
+ }
+
+ CFX_ByteString bsHeader;
+ if (argc > 4) {
+ std::unique_ptr<CFXJSE_Value> argFive = GetSimpleValue(pThis, args, 4);
+ ValueToUTF8String(argFive.get(), bsHeader);
+ }
+
+ CFX_WideString decodedResponse;
+ if (!pAppProvider->PostRequestURL(
+ CFX_WideString::FromUTF8(bsURL.AsStringC()),
+ CFX_WideString::FromUTF8(bsData.AsStringC()),
+ CFX_WideString::FromUTF8(bsContentType.AsStringC()),
+ CFX_WideString::FromUTF8(bsEncode.AsStringC()),
+ CFX_WideString::FromUTF8(bsHeader.AsStringC()), decodedResponse)) {
+ pContext->ThrowException(XFA_IDS_SERVER_DENY);
+ return;
}
+
+ args.GetReturnValue()->SetString(
+ FX_UTF8Encode(decodedResponse.c_str(), decodedResponse.GetLength())
+ .AsStringC());
}
// static
@@ -5058,39 +5016,43 @@ void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis,
CFXJSE_Arguments& args) {
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
int32_t argc = args.GetLength();
- if ((argc == 2) || (argc == 3)) {
- CXFA_Document* pDoc = pContext->GetDocument();
- if (!pDoc) {
- return;
- }
- IXFA_AppProvider* pAppProvider =
- pDoc->GetParser()->GetNotify()->GetAppProvider();
- if (!pAppProvider) {
- return;
- }
- CFX_ByteString bsURL;
- CFX_ByteString bsData;
- CFX_ByteString bsEncode;
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- ValueToUTF8String(argOne.get(), bsURL);
- std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
- ValueToUTF8String(argTwo.get(), bsData);
- if (argc > 2) {
- std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
- ValueToUTF8String(argThree.get(), bsEncode);
- }
- FX_BOOL bFlags = pAppProvider->PutRequestURL(
- CFX_WideString::FromUTF8(bsURL.AsStringC()),
- CFX_WideString::FromUTF8(bsData.AsStringC()),
- CFX_WideString::FromUTF8(bsEncode.AsStringC()));
- if (bFlags) {
- args.GetReturnValue()->SetString("");
- } else {
- pContext->ThrowException(XFA_IDS_SERVER_DENY);
- }
- } else {
+ if (argc < 2 || argc > 3) {
pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Put");
+ return;
+ }
+
+ CXFA_Document* pDoc = pContext->GetDocument();
+ if (!pDoc)
+ return;
+
+ IXFA_AppProvider* pAppProvider =
+ pDoc->GetParser()->GetNotify()->GetAppProvider();
+ if (!pAppProvider)
+ return;
+
+ CFX_ByteString bsURL;
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ ValueToUTF8String(argOne.get(), bsURL);
+
+ CFX_ByteString bsData;
+ std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
+ ValueToUTF8String(argTwo.get(), bsData);
+
+ CFX_ByteString bsEncode;
+ if (argc > 2) {
+ std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
+ ValueToUTF8String(argThree.get(), bsEncode);
}
+
+ if (!pAppProvider->PutRequestURL(
+ CFX_WideString::FromUTF8(bsURL.AsStringC()),
+ CFX_WideString::FromUTF8(bsData.AsStringC()),
+ CFX_WideString::FromUTF8(bsEncode.AsStringC()))) {
+ pContext->ThrowException(XFA_IDS_SERVER_DENY);
+ return;
+ }
+
+ args.GetReturnValue()->SetString("");
}
// static
@@ -5098,334 +5060,375 @@ void CXFA_FM2JSContext::assign_value_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
- v8::Isolate* pIsolate = pContext->GetScriptRuntime();
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0);
- std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1);
- FX_BOOL bSetStatus = TRUE;
- if (lValue->IsArray()) {
- std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate));
- lValue->GetObjectProperty("length", leftLengthValue.get());
- int32_t iLeftLength = leftLengthValue->ToInteger();
- std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
- std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
- lValue->GetObjectPropertyByIdx(1, propertyValue.get());
- if (propertyValue->IsNull()) {
- for (int32_t i = 2; i < iLeftLength; i++) {
- lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
- bSetStatus = SetObjectDefaultValue(jsObjectValue.get(), rValue.get());
- if (!bSetStatus) {
- pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
- break;
- }
- }
- } else {
- CFX_ByteString propertyStr;
- propertyValue->ToString(propertyStr);
- for (int32_t i = 2; i < iLeftLength; i++) {
- lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
- jsObjectValue->SetObjectProperty(propertyStr.AsStringC(),
- rValue.get());
+ if (args.GetLength() != 2) {
+ pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> lValue = args.GetValue(0);
+ std::unique_ptr<CFXJSE_Value> rValue = GetSimpleValue(pThis, args, 1);
+ if (lValue->IsArray()) {
+ v8::Isolate* pIsolate = pContext->GetScriptRuntime();
+ std::unique_ptr<CFXJSE_Value> leftLengthValue(new CFXJSE_Value(pIsolate));
+ lValue->GetObjectProperty("length", leftLengthValue.get());
+ int32_t iLeftLength = leftLengthValue->ToInteger();
+ std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate));
+ std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate));
+ lValue->GetObjectPropertyByIdx(1, propertyValue.get());
+ if (propertyValue->IsNull()) {
+ for (int32_t i = 2; i < iLeftLength; i++) {
+ lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
+ if (!SetObjectDefaultValue(jsObjectValue.get(), rValue.get())) {
+ pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
+ return;
}
}
- } else if (lValue->IsObject()) {
- bSetStatus = SetObjectDefaultValue(lValue.get(), rValue.get());
- if (!bSetStatus) {
- pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
+ } else {
+ CFX_ByteString propertyStr;
+ propertyValue->ToString(propertyStr);
+ for (int32_t i = 2; i < iLeftLength; i++) {
+ lValue->GetObjectPropertyByIdx(i, jsObjectValue.get());
+ jsObjectValue->SetObjectProperty(propertyStr.AsStringC(), rValue.get());
}
}
- args.GetReturnValue()->Assign(rValue.get());
- } else {
- pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
+ } else if (lValue->IsObject()) {
+ if (!SetObjectDefaultValue(lValue.get(), rValue.get())) {
+ pContext->ThrowException(XFA_IDS_NOT_DEFAUL_VALUE);
+ return;
+ }
}
+ args.GetReturnValue()->Assign(rValue.get());
}
// static
void CXFA_FM2JSContext::logical_or_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() && argSecond->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
- FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first || second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() && argSecond->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
}
+
+ FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
+ FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first || second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::logical_and_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() && argSecond->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
- FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first && second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
}
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() && argSecond->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
+ }
+
+ FX_FLOAT first = ValueToFloat(pThis, argFirst.get());
+ FX_FLOAT second = ValueToFloat(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first && second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::equality_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- if (fm_ref_equal(pThis, args)) {
- args.GetReturnValue()->SetInteger(1);
- } else {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(firstOutput == secondOutput);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first == second) ? 1 : 0);
- }
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ if (fm_ref_equal(pThis, args)) {
+ args.GetReturnValue()->SetInteger(1);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
+ return;
+ }
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(firstOutput == secondOutput);
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first == second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::notequality_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- if (fm_ref_equal(pThis, args)) {
- args.GetReturnValue()->SetInteger(0);
- } else {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(
- (argFirst->IsNull() && argSecond->IsNull()) ? 0 : 1);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(firstOutput != secondOutput);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger(first != second);
- }
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ if (fm_ref_equal(pThis, args)) {
+ args.GetReturnValue()->SetInteger(0);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(
+ (argFirst->IsNull() && argSecond->IsNull()) ? 0 : 1);
+ return;
+ }
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(firstOutput != secondOutput);
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger(first != second);
}
// static
FX_BOOL CXFA_FM2JSContext::fm_ref_equal(CFXJSE_Value* pThis,
CFXJSE_Arguments& args) {
- FX_BOOL bRet = FALSE;
- v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
- if (argFirst->IsArray() && argSecond->IsArray()) {
- std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate));
- std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate));
- argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get());
- argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get());
- if (firstFlagValue->ToInteger() == 3 && secondFlagValue->ToInteger() == 3) {
- std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate));
- std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate));
- argFirst->GetObjectPropertyByIdx(2, firstJSObject.get());
- argSecond->GetObjectPropertyByIdx(2, secondJSObject.get());
- if (!firstJSObject->IsNull() && !secondJSObject->IsNull()) {
- bRet = (firstJSObject->ToHostObject(nullptr) ==
- secondJSObject->ToHostObject(nullptr));
- }
- }
- }
- return bRet;
+ if (!argFirst->IsArray() || !argSecond->IsArray())
+ return FALSE;
+
+ v8::Isolate* pIsolate = ToJSContext(pThis, nullptr)->GetScriptRuntime();
+ std::unique_ptr<CFXJSE_Value> firstFlagValue(new CFXJSE_Value(pIsolate));
+ std::unique_ptr<CFXJSE_Value> secondFlagValue(new CFXJSE_Value(pIsolate));
+ argFirst->GetObjectPropertyByIdx(0, firstFlagValue.get());
+ argSecond->GetObjectPropertyByIdx(0, secondFlagValue.get());
+ if (firstFlagValue->ToInteger() != 3 || secondFlagValue->ToInteger() != 3)
+ return FALSE;
+
+ std::unique_ptr<CFXJSE_Value> firstJSObject(new CFXJSE_Value(pIsolate));
+ std::unique_ptr<CFXJSE_Value> secondJSObject(new CFXJSE_Value(pIsolate));
+ argFirst->GetObjectPropertyByIdx(2, firstJSObject.get());
+ argSecond->GetObjectPropertyByIdx(2, secondJSObject.get());
+ if (firstJSObject->IsNull() || secondJSObject->IsNull())
+ return FALSE;
+
+ return (firstJSObject->ToHostObject(nullptr) ==
+ secondJSObject->ToHostObject(nullptr));
}
// static
void CXFA_FM2JSContext::less_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(0);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(
- firstOutput.Compare(secondOutput.AsStringC()) == -1);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first < second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(0);
+ return;
+ }
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(
+ firstOutput.Compare(secondOutput.AsStringC()) == -1);
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first < second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::lessequal_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(
- firstOutput.Compare(secondOutput.AsStringC()) != 1);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
+ return;
+ }
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(
+ firstOutput.Compare(secondOutput.AsStringC()) != 1);
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first <= second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::greater_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(0);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(
- firstOutput.Compare(secondOutput.AsStringC()) == 1);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first > second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(0);
+ return;
}
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(
+ firstOutput.Compare(secondOutput.AsStringC()) == 1);
+ return;
+ }
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first > second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::greaterequal_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() || argSecond->IsNull()) {
- args.GetReturnValue()->SetInteger(
- (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
- } else if (argFirst->IsString() && argSecond->IsString()) {
- CFX_ByteString firstOutput;
- CFX_ByteString secondOutput;
- argFirst->ToString(firstOutput);
- argSecond->ToString(secondOutput);
- args.GetReturnValue()->SetInteger(
- firstOutput.Compare(secondOutput.AsStringC()) != -1);
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() || argSecond->IsNull()) {
+ args.GetReturnValue()->SetInteger(
+ (argFirst->IsNull() && argSecond->IsNull()) ? 1 : 0);
+ return;
}
+
+ if (argFirst->IsString() && argSecond->IsString()) {
+ CFX_ByteString firstOutput;
+ CFX_ByteString secondOutput;
+ argFirst->ToString(firstOutput);
+ argSecond->ToString(secondOutput);
+ args.GetReturnValue()->SetInteger(
+ firstOutput.Compare(secondOutput.AsStringC()) != -1);
+ return;
+ }
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetInteger((first >= second) ? 1 : 0);
}
// static
void CXFA_FM2JSContext::plus_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
- std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
- if (ValueIsNull(pThis, argFirst.get()) &&
- ValueIsNull(pThis, argSecond.get())) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetDouble(first + second);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = args.GetValue(0);
+ std::unique_ptr<CFXJSE_Value> argSecond = args.GetValue(1);
+ if (ValueIsNull(pThis, argFirst.get()) &&
+ ValueIsNull(pThis, argSecond.get())) {
+ args.GetReturnValue()->SetNull();
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetDouble(first + second);
}
// static
void CXFA_FM2JSContext::minus_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() && argSecond->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetDouble(first - second);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
}
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() && argSecond->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
+ }
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetDouble(first - second);
}
// static
void CXFA_FM2JSContext::multiple_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() && argSecond->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- args.GetReturnValue()->SetDouble(first * second);
- }
- } else {
+ if (args.GetLength() != 2) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() && argSecond->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ args.GetReturnValue()->SetDouble(first * second);
}
// static
@@ -5433,74 +5436,79 @@ void CXFA_FM2JSContext::divide_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
CXFA_FM2JSContext* pContext = ToJSContext(pThis, nullptr);
- if (args.GetLength() == 2) {
- std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
- std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
- if (argFirst->IsNull() && argSecond->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
- FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
- if (second == 0.0) {
- pContext->ThrowException(XFA_IDS_DIVIDE_ZERO);
- } else {
- args.GetReturnValue()->SetDouble(first / second);
- }
- }
- } else {
+ if (args.GetLength() != 2) {
pContext->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argFirst = GetSimpleValue(pThis, args, 0);
+ std::unique_ptr<CFXJSE_Value> argSecond = GetSimpleValue(pThis, args, 1);
+ if (argFirst->IsNull() && argSecond->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
+ }
+
+ FX_DOUBLE second = ValueToDouble(pThis, argSecond.get());
+ if (second == 0.0) {
+ pContext->ThrowException(XFA_IDS_DIVIDE_ZERO);
+ return;
}
+
+ FX_DOUBLE first = ValueToDouble(pThis, argFirst.get());
+ args.GetReturnValue()->SetDouble(first / second);
}
// static
void CXFA_FM2JSContext::positive_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 1) {
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- if (argOne->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- args.GetReturnValue()->SetDouble(0.0 +
- ValueToDouble(pThis, argOne.get()));
- }
- } else {
+ if (args.GetLength() != 1) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
}
+
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ if (argOne->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
+ }
+ args.GetReturnValue()->SetDouble(0.0 + ValueToDouble(pThis, argOne.get()));
}
// static
void CXFA_FM2JSContext::negative_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 1) {
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- if (argOne->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- args.GetReturnValue()->SetDouble(0.0 -
- ValueToDouble(pThis, argOne.get()));
- }
- } else {
+ if (args.GetLength() != 1) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
+ }
+
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ if (argOne->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
}
+ args.GetReturnValue()->SetDouble(0.0 - ValueToDouble(pThis, argOne.get()));
}
// static
void CXFA_FM2JSContext::logical_not_operator(CFXJSE_Value* pThis,
const CFX_ByteStringC& szFuncName,
CFXJSE_Arguments& args) {
- if (args.GetLength() == 1) {
- std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- if (argOne->IsNull()) {
- args.GetReturnValue()->SetNull();
- } else {
- FX_DOUBLE first = ValueToDouble(pThis, argOne.get());
- args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0);
- }
- } else {
+ if (args.GetLength() != 1) {
ToJSContext(pThis, nullptr)->ThrowException(XFA_IDS_COMPILER_ERROR);
+ return;
}
+
+ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
+ if (argOne->IsNull()) {
+ args.GetReturnValue()->SetNull();
+ return;
+ }
+
+ FX_DOUBLE first = ValueToDouble(pThis, argOne.get());
+ args.GetReturnValue()->SetInteger((first == 0.0) ? 1 : 0);
}
// static