From: <yd...@us...> - 2014-06-18 02:15:59
|
Revision: 2669 http://sourceforge.net/p/edk2-buildtools/code/2669 Author: ydong10 Date: 2014-06-18 02:15:55 +0000 (Wed, 18 Jun 2014) Log Message: ----------- Refine the string to UINT* convert logic, not report error for this, just report warning. Also refine the logic, add the line info in the warning info. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eri...@in...> Reviewed-by: Liming Gao <lim...@in...> Modified Paths: -------------- trunk/BaseTools/Source/C/VfrCompile/VfrError.cpp trunk/BaseTools/Source/C/VfrCompile/VfrError.h trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g Modified: trunk/BaseTools/Source/C/VfrCompile/VfrError.cpp =================================================================== --- trunk/BaseTools/Source/C/VfrCompile/VfrError.cpp 2014-06-13 07:12:55 UTC (rev 2668) +++ trunk/BaseTools/Source/C/VfrCompile/VfrError.cpp 2014-06-18 02:15:55 UTC (rev 2669) @@ -51,6 +51,7 @@ static SVFR_WARNING_HANDLE VFR_WARNING_HANDLE_TABLE [] = { { VFR_WARNING_DEFAULT_VALUE_REDEFINED, ": default value re-defined with different value"}, + { VFR_WARNING_STRING_TO_UINT_OVERFLOW, ": String to UINT* Overflow"}, { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" } }; Modified: trunk/BaseTools/Source/C/VfrCompile/VfrError.h =================================================================== --- trunk/BaseTools/Source/C/VfrCompile/VfrError.h 2014-06-13 07:12:55 UTC (rev 2668) +++ trunk/BaseTools/Source/C/VfrCompile/VfrError.h 2014-06-18 02:15:55 UTC (rev 2669) @@ -49,6 +49,7 @@ typedef enum { VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0, + VFR_WARNING_STRING_TO_UINT_OVERFLOW, VFR_WARNING_CODEUNDEFINED } EFI_VFR_WARNING_CODE; Modified: trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g =================================================================== --- trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2014-06-13 07:12:55 UTC (rev 2668) +++ trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2014-06-18 02:15:55 UTC (rev 2669) @@ -295,7 +295,7 @@ "," ID:StringIdentifier << Identifier = ID->getText(); >> } { - "," N:Number << PackAction |= VFR_PACK_ASSIGN; PackNumber = _STOU32(N->getText()); >> + "," N:Number << PackAction |= VFR_PACK_ASSIGN; PackNumber = _STOU32(N->getText(), N->getLine()); >> } << gCVfrVarDataTypeDB.Pack (LineNum, PackAction, Identifier, PackNumber); >> ; @@ -305,7 +305,7 @@ UINT32 LineNum; UINT32 PackNumber = DEFAULT_PACK_ALIGN; >> - N:Number << LineNum = N->getLine(); PackNumber = _STOU32(N->getText()); >> + N:Number << LineNum = N->getLine(); PackNumber = _STOU32(N->getText(), N->getLine()); >> << gCVfrVarDataTypeDB.Pack (LineNum, VFR_PACK_ASSIGN, NULL, PackNumber); >> ; @@ -354,7 +354,7 @@ D:"UINT64" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -364,7 +364,7 @@ D:"UINT32" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -376,7 +376,7 @@ ("UINT16" | "CHAR16") N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), (CHAR8 *) "UINT16", ArrayNum), N); >> ; @@ -386,7 +386,7 @@ D:"UINT8" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -396,7 +396,7 @@ D:"BOOLEAN" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -406,7 +406,7 @@ D:"EFI_STRING_ID" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -416,7 +416,7 @@ D:"EFI_HII_DATE" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -426,7 +426,7 @@ D:"EFI_HII_TIME" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -436,7 +436,7 @@ D:"EFI_HII_REF" N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >> ; @@ -446,7 +446,7 @@ T:StringIdentifier N:StringIdentifier { - OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >> + OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText(), I->getLine()); >> } ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), T->getText(), ArrayNum), T); >> ; @@ -458,14 +458,14 @@ guidSubDefinition [EFI_GUID &Guid] : G4:Number "," G5:Number "," G6:Number "," G7:Number "," G8:Number "," G9:Number "," G10:Number "," G11:Number << - Guid.Data4[0] = _STOU8(G4->getText()); - Guid.Data4[1] = _STOU8(G5->getText()); - Guid.Data4[2] = _STOU8(G6->getText()); - Guid.Data4[3] = _STOU8(G7->getText()); - Guid.Data4[4] = _STOU8(G8->getText()); - Guid.Data4[5] = _STOU8(G9->getText()); - Guid.Data4[6] = _STOU8(G10->getText()); - Guid.Data4[7] = _STOU8(G11->getText()); + Guid.Data4[0] = _STOU8(G4->getText(), G4->getLine()); + Guid.Data4[1] = _STOU8(G5->getText(), G5->getLine()); + Guid.Data4[2] = _STOU8(G6->getText(), G6->getLine()); + Guid.Data4[3] = _STOU8(G7->getText(), G7->getLine()); + Guid.Data4[4] = _STOU8(G8->getText(), G8->getLine()); + Guid.Data4[5] = _STOU8(G9->getText(), G9->getLine()); + Guid.Data4[6] = _STOU8(G10->getText(), G10->getLine()); + Guid.Data4[7] = _STOU8(G11->getText(), G11->getLine()); >> ; @@ -473,9 +473,9 @@ OpenBrace G1:Number "," G2:Number "," G3:Number "," << - Guid.Data1 = _STOU32 (G1->getText()); - Guid.Data2 = _STOU16 (G2->getText()); - Guid.Data3 = _STOU16 (G3->getText()); + Guid.Data1 = _STOU32 (G1->getText(), G1->getLine()); + Guid.Data2 = _STOU16 (G2->getText(), G2->getLine()); + Guid.Data3 = _STOU16 (G3->getText(), G3->getLine()); >> ( OpenBrace guidSubDefinition[Guid] CloseBrace @@ -568,8 +568,8 @@ if (mCompatibleMode) { memcpy (&mFormsetGuid, &Guid, sizeof (EFI_GUID)); } - FSObj->SetFormSetTitle (_STOSID(S1->getText())); - FSObj->SetHelp (_STOSID(S2->getText())); + FSObj->SetFormSetTitle (_STOSID(S1->getText(), S1->getLine())); + FSObj->SetHelp (_STOSID(S2->getText(), S2->getLine())); >> { FC:Class "=" classDefinition[C] "," << {CIfrClass CObj;SET_LINE_INFO (CObj, FC); CObj.SetClass(C);} >> @@ -656,25 +656,25 @@ Uuid "=" guidDefinition[Guid] {"," DataType "=" ( - U64:"UINT64" {OpenBracket AN1:Number CloseBracket <<ArrayNum = _STOU32(AN1->getText());>>} + U64:"UINT64" {OpenBracket AN1:Number CloseBracket <<ArrayNum = _STOU32(AN1->getText(), AN1->getLine());>>} << TypeName = U64->getText(); LineNum = U64->getLine(); >> - | U32:"UINT32" {OpenBracket AN2:Number CloseBracket <<ArrayNum = _STOU32(AN2->getText());>>} + | U32:"UINT32" {OpenBracket AN2:Number CloseBracket <<ArrayNum = _STOU32(AN2->getText(), AN2->getLine());>>} << TypeName = U32->getText(); LineNum = U32->getLine(); >> - | U16:"UINT16" {OpenBracket AN3:Number CloseBracket <<ArrayNum = _STOU32(AN3->getText());>>} + | U16:"UINT16" {OpenBracket AN3:Number CloseBracket <<ArrayNum = _STOU32(AN3->getText(), AN3->getLine());>>} << TypeName = U16->getText(); LineNum = U16->getLine(); >> - | U8:"UINT8" {OpenBracket AN4:Number CloseBracket <<ArrayNum = _STOU32(AN4->getText());>>} + | U8:"UINT8" {OpenBracket AN4:Number CloseBracket <<ArrayNum = _STOU32(AN4->getText(), AN4->getLine());>>} << TypeName = U8->getText(); LineNum = U8->getLine(); >> - | BL:"BOOLEAN" {OpenBracket AN5:Number CloseBracket <<ArrayNum = _STOU32(AN5->getText());>>} + | BL:"BOOLEAN" {OpenBracket AN5:Number CloseBracket <<ArrayNum = _STOU32(AN5->getText(), AN5->getLine());>>} << TypeName = BL->getText(); LineNum = BL->getLine(); >> - | SI:"EFI_STRING_ID" {OpenBracket AN6:Number CloseBracket <<ArrayNum = _STOU32(AN6->getText());>>} + | SI:"EFI_STRING_ID" {OpenBracket AN6:Number CloseBracket <<ArrayNum = _STOU32(AN6->getText(), AN6->getLine());>>} << TypeName = SI->getText(); LineNum = SI->getLine(); >> - | D:"EFI_HII_DATE" {OpenBracket AN7:Number CloseBracket <<ArrayNum = _STOU32(AN7->getText());>>} + | D:"EFI_HII_DATE" {OpenBracket AN7:Number CloseBracket <<ArrayNum = _STOU32(AN7->getText(), AN7->getLine());>>} << TypeName = D->getText(); LineNum = D->getLine(); IsStruct = TRUE;>> - | T:"EFI_HII_TIME" {OpenBracket AN8:Number CloseBracket <<ArrayNum = _STOU32(AN8->getText());>>} + | T:"EFI_HII_TIME" {OpenBracket AN8:Number CloseBracket <<ArrayNum = _STOU32(AN8->getText(), AN8->getLine());>>} << TypeName = T->getText(); LineNum = T->getLine(); IsStruct = TRUE;>> - | R:"EFI_HII_REF" {OpenBracket AN9:Number CloseBracket <<ArrayNum = _STOU32(AN9->getText());>>} + | R:"EFI_HII_REF" {OpenBracket AN9:Number CloseBracket <<ArrayNum = _STOU32(AN9->getText(), AN9->getLine());>>} << TypeName = R->getText(); LineNum = R->getLine(); IsStruct = TRUE;>> - | TN:StringIdentifier {OpenBracket AN10:Number CloseBracket <<ArrayNum = _STOU32(AN10->getText());>>} + | TN:StringIdentifier {OpenBracket AN10:Number CloseBracket <<ArrayNum = _STOU32(AN10->getText(), AN10->getLine());>>} << TypeName = TN->getText(); LineNum = TN->getLine(); IsStruct = TRUE;>> ) << @@ -738,7 +738,7 @@ << ArrayIdx = 0; if (IsArray == TRUE) { - ArrayIdx = _STOU8(IDX1->getText()); + ArrayIdx = _STOU8(IDX1->getText(), IDX1->getLine()); if (ArrayIdx >= ArrayNum) return; IsArray = FALSE; } @@ -769,49 +769,49 @@ << if (IsStruct == FALSE) { if (strcmp ("UINT64", TypeName) == 0) { - Data_U64 = _STOU64(RD->getText()); + Data_U64 = _STOU64(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_U64, TypeSize); }else if (strcmp ("UINT32", TypeName) == 0) { - Data_U32 = _STOU32(RD->getText()); + Data_U32 = _STOU32(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_U32, TypeSize); }else if (strcmp ("UINT16", TypeName) == 0) { - Data_U16 = _STOU16(RD->getText()); + Data_U16 = _STOU16(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_U16, TypeSize); }else if (strcmp ("UINT8", TypeName) == 0) { - Data_U8 = _STOU8(RD->getText()); + Data_U8 = _STOU8(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_U8, TypeSize); }else if (strcmp ("BOOLEAN", TypeName)== 0) { - Data_BL = _STOU8(RD->getText()); + Data_BL = _STOU8(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_BL, TypeSize); }else if (strcmp ("EFI_STRING_ID", TypeName) == 0) { - Data_SID = _STOSID(RD->getText()); + Data_SID = _STOSID(RD->getText(), RD->getLine()); memcpy (ByteOffset, &Data_SID, TypeSize); } } else { gCVfrVarDataTypeDB.GetDataFieldInfo(TFName, FieldOffset, FieldType, FieldSize); switch (FieldType) { case EFI_IFR_TYPE_NUM_SIZE_8: - Data_U8 = _STOU8(RD->getText()); + Data_U8 = _STOU8(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_U8, FieldSize); break; case EFI_IFR_TYPE_NUM_SIZE_16: - Data_U16 = _STOU16(RD->getText()); + Data_U16 = _STOU16(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_U16, FieldSize); break; case EFI_IFR_TYPE_NUM_SIZE_32: - Data_U32 = _STOU32(RD->getText()); + Data_U32 = _STOU32(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_U32, FieldSize); break; case EFI_IFR_TYPE_NUM_SIZE_64: - Data_U64 = _STOU64(RD->getText()); + Data_U64 = _STOU64(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_U64, FieldSize); break; case EFI_IFR_TYPE_BOOLEAN: - Data_BL = _STOU8(RD->getText()); + Data_BL = _STOU8(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_BL, FieldSize); break; case EFI_IFR_TYPE_STRING: - Data_SID = _STOSID(RD->getText()); + Data_SID = _STOSID(RD->getText(), RD->getLine()); memcpy (ByteOffset + FieldOffset, &Data_SID, FieldSize); break; default: @@ -830,17 +830,17 @@ D:DefaultStore N:StringIdentifier "," Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" { - "," Attribute "=" A:Number << DefaultId = _STOU16(A->getText()); >> + "," Attribute "=" A:Number << DefaultId = _STOU16(A->getText(), A->getLine()); >> } << if (mCVfrDefaultStore.DefaultIdRegistered (DefaultId) == FALSE) { CIfrDefaultStore DSObj; - _PCATCH(mCVfrDefaultStore.RegisterDefaultStore (DSObj.GetObjBinAddr(), N->getText(), _STOSID(S->getText()), DefaultId)), D->getLine(); + _PCATCH(mCVfrDefaultStore.RegisterDefaultStore (DSObj.GetObjBinAddr(), N->getText(), _STOSID(S->getText(), S->getLine()), DefaultId)), D->getLine(); DSObj.SetLineNo(D->getLine()); - DSObj.SetDefaultName (_STOSID(S->getText())); + DSObj.SetDefaultName (_STOSID(S->getText(), S->getLine())); DSObj.SetDefaultId (DefaultId); } else { - _PCATCH(mCVfrDefaultStore.ReRegisterDefaultStoreById (DefaultId, N->getText(), _STOSID(S->getText()))), D->getLine(); + _PCATCH(mCVfrDefaultStore.ReRegisterDefaultStoreById (DefaultId, N->getText(), _STOSID(S->getText(), S->getLine()))), D->getLine(); } >> ";" @@ -870,14 +870,14 @@ ) { Key "=" FID:Number "," << // Key is used to assign Varid in Framework VFR but no use in UEFI2.1 VFR if (mCompatibleMode) { - VarStoreId = _STOU16(FID->getText()); + VarStoreId = _STOU16(FID->getText(), FID->getLine()); } >> } { VarId "=" ID:Number "," << _PCATCH( - (INTN)(VarStoreId = _STOU16(ID->getText())) != 0, + (INTN)(VarStoreId = _STOU16(ID->getText(), ID->getLine())) != 0, (INTN)TRUE, ID, "varid 0 is not allowed." @@ -936,7 +936,7 @@ { VarId "=" ID:Number "," << _PCATCH( - (INTN)(VarStoreId = _STOU16(ID->getText())) != 0, + (INTN)(VarStoreId = _STOU16(ID->getText(), ID->getLine())) != 0, (INTN)TRUE, ID, "varid 0 is not allowed." @@ -952,11 +952,11 @@ Name "=" "STRING_TOKEN" "\(" VN:Number "\)" "," VarSize "=" N:Number "," << IsUEFI23EfiVarstore = FALSE; - StoreName = gCVfrStringDB.GetVarStoreNameFormStringId(_STOSID(VN->getText())); + StoreName = gCVfrStringDB.GetVarStoreNameFormStringId(_STOSID(VN->getText(), VN->getLine())); if (StoreName == NULL) { _PCATCH (VFR_RETURN_UNSUPPORTED, VN->getLine(), "Can't get varstore name for this StringId!"); } - Size = _STOU32(N->getText()); + Size = _STOU32(N->getText(), N->getLine()); switch (Size) { case 1: TypeName = (CHAR8 *) "UINT8"; @@ -1012,7 +1012,7 @@ ; vfrVarStoreEfiAttr [UINT32 & Attr] : - N:Number << $Attr |= _STOU32(N->getText()); >> + N:Number << $Attr |= _STOU32(N->getText(), N->getLine()); >> ; vfrStatementVarStoreNameValue : @@ -1027,7 +1027,7 @@ { VarId "=" ID:Number "," << _PCATCH( - (INTN)(VarStoreId = _STOU16(ID->getText())) != 0, + (INTN)(VarStoreId = _STOU16(ID->getText(), ID->getLine())) != 0, (INTN)TRUE, ID, "varid 0 is not allowed." @@ -1040,7 +1040,7 @@ _PCATCH(mCVfrDataStorage.DeclareNameVarStoreBegin (SN->getText(), VarStoreId), SN); Created = TRUE; } - _PCATCH(mCVfrDataStorage.NameTableAddItem (_STOSID(N->getText())), SN); + _PCATCH(mCVfrDataStorage.NameTableAddItem (_STOSID(N->getText(), N->getLine())), SN); >> )+ Uuid "=" guidDefinition[Guid] << _PCATCH(mCVfrDataStorage.DeclareNameVarStoreEnd (&Guid), SN); >> @@ -1069,7 +1069,7 @@ | ClassInputDevice << $Class |= EFI_INPUT_DEVICE_CLASS; >> | ClassOnBoardDevice << $Class |= EFI_ON_BOARD_DEVICE_CLASS; >> | ClassOtherDevice << $Class |= EFI_OTHER_DEVICE_CLASS; >> - | N:Number << $Class |= _STOU16(N->getText()); >> + | N:Number << $Class |= _STOU16(N->getText(), N->getLine()); >> ; subclassDefinition[UINT16 & SubClass] : @@ -1078,7 +1078,7 @@ | SubclassGeneralApplication << $SubClass |= EFI_GENERAL_APPLICATION_SUBCLASS; >> | SubclassFrontPage << $SubClass |= EFI_FRONT_PAGE_SUBCLASS; >> | SubclassSingleUse << $SubClass |= EFI_SINGLE_USE_SUBCLASS; >> - | N:Number << $SubClass |= _STOU16(N->getText()); >> + | N:Number << $SubClass |= _STOU16(N->getText(), N->getLine()); >> ; vfrStatementDisableIfFormSet : @@ -1113,8 +1113,8 @@ // the syntax of question header and statement header // vfrStatementHeader[CIfrStatementHeader *SHObj] : - Prompt "=" "STRING_TOKEN" "\(" S1:Number "\)" "," << $SHObj->SetPrompt (_STOSID(S1->getText())); >> - Help "=" "STRING_TOKEN" "\(" S2:Number "\)" << $SHObj->SetHelp (_STOSID(S2->getText())); >> + Prompt "=" "STRING_TOKEN" "\(" S1:Number "\)" "," << $SHObj->SetPrompt (_STOSID(S1->getText(), S1->getLine())); >> + Help "=" "STRING_TOKEN" "\(" S2:Number "\)" << $SHObj->SetHelp (_STOSID(S2->getText(), S2->getLine())); >> ; vfrQuestionHeader[CIfrQuestionHeader & QHObj, EFI_QUESION_TYPE QType = QUESTION_NORMAL]: @@ -1138,7 +1138,7 @@ { V:VarId "=" vfrStorageVarId[Info, VarIdStr] "," } { QuestionId "=" ID:Number "," << - QId = _STOQID(ID->getText()); + QId = _STOQID(ID->getText(), ID->getLine()); _PCATCH(mCVfrQuestionDB.FindQuestion (QId), VFR_RETURN_UNDEFINED, ID, "has already been used please assign another number"); >> } @@ -1205,7 +1205,7 @@ ( SN1:StringIdentifier << SName = SN1->getText(); _STRCAT(&VarIdStr, SN1->getText()); >> OpenBracket I1:Number CloseBracket << - Idx = _STOU32(I1->getText()); + Idx = _STOU32(I1->getText(), I1->getLine()); _STRCAT(&VarIdStr, "["); _STRCAT(&VarIdStr, I1->getText()); _STRCAT(&VarIdStr, "]"); @@ -1267,7 +1267,7 @@ SF:StringIdentifier << _STRCAT(&VarIdStr, SF->getText()); _STRCAT(&VarStr, SF->getText()); >> { OpenBracket I2:Number CloseBracket << - Idx = _STOU32(I2->getText()); + Idx = _STOU32(I2->getText(), I2->getLine()); if (mCompatibleMode) Idx --; if (Idx > 0) { // @@ -1347,7 +1347,7 @@ SF:StringIdentifier << _STRCAT (&VarIdStr, SF->getText()); >> { OpenBracket I2:Number CloseBracket << - Idx = _STOU32(I2->getText()); + Idx = _STOU32(I2->getText(), I2->getLine()); if (mCompatibleMode) Idx --; if (Idx > 0) { // @@ -1372,22 +1372,22 @@ N1:Number << switch ($Type) { case EFI_IFR_TYPE_NUM_SIZE_8 : - $Value.u8 = _STOU8(N1->getText()); + $Value.u8 = _STOU8(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_NUM_SIZE_16 : - $Value.u16 = _STOU16(N1->getText()); + $Value.u16 = _STOU16(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_NUM_SIZE_32 : - $Value.u32 = _STOU32(N1->getText()); + $Value.u32 = _STOU32(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_NUM_SIZE_64 : - $Value.u64 = _STOU64(N1->getText()); + $Value.u64 = _STOU64(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_BOOLEAN : - $Value.b = _STOU8(N1->getText()); + $Value.b = _STOU8(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_STRING : - $Value.string = _STOU16(N1->getText()); + $Value.string = _STOU16(N1->getText(), N1->getLine()); break; case EFI_IFR_TYPE_TIME : case EFI_IFR_TYPE_DATE : @@ -1398,14 +1398,14 @@ >> | B1:True << $Value.b = TRUE; >> | B2:False << $Value.b = FALSE; >> - | O1:One << $Value.u8 = _STOU8(O1->getText()); >> - | O2:Ones << $Value.u64 = _STOU64(O2->getText()); >> - | Z:Zero << $Value.u8 = _STOU8(Z->getText()); >> - | HOUR:Number ":" MINUTE:Number ":" SECOND:Number << $Value.time = _STOT(HOUR->getText(), MINUTE->getText(), SECOND->getText()); >> - | YEAR:Number "/" MONTH:Number "/" DAY:Number << $Value.date = _STOD(YEAR->getText(), MONTH->getText(), DAY->getText()); >> + | O1:One << $Value.u8 = _STOU8(O1->getText(), O1->getLine()); >> + | O2:Ones << $Value.u64 = _STOU64(O2->getText(), O2->getLine()); >> + | Z:Zero << $Value.u8 = _STOU8(Z->getText(), Z->getLine()); >> + | HOUR:Number ":" MINUTE:Number ":" SECOND:Number << $Value.time = _STOT(HOUR->getText(), MINUTE->getText(),SECOND->getText(), HOUR->getLine()); >> + | YEAR:Number "/" MONTH:Number "/" DAY:Number << $Value.date = _STOD(YEAR->getText(), MONTH->getText(), DAY->getText(), YEAR->getLine()); >> | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" "\(" DP:Number "\)" - << $Value.ref = _STOR(QI->getText(), FI->getText(), &Guid, DP->getText()); >> - | "STRING_TOKEN" "\(" S1:Number "\)" << $Value.string = _STOSID(S1->getText()); >> + << $Value.ref = _STOR(QI->getText(), FI->getText(), &Guid, DP->getText(), QI->getLine()); >> + | "STRING_TOKEN" "\(" S1:Number "\)" << $Value.string = _STOSID(S1->getText(), S1->getLine()); >> ; //***************************************************************************** @@ -1415,8 +1415,8 @@ vfrFormDefinition : << CIfrForm FObj; >> F:Form << FObj.SetLineNo(F->getLine()); >> - FormId "=" S1:Number "," << _PCATCH(FObj.SetFormId (_STOFID(S1->getText())), S1); >> - Title "=" "STRING_TOKEN" "\(" S2:Number "\)" ";" << FObj.SetFormTitle (_STOSID(S2->getText())); >> + FormId "=" S1:Number "," << _PCATCH(FObj.SetFormId (_STOFID(S1->getText(), S1->getLine())), S1); >> + Title "=" "STRING_TOKEN" "\(" S2:Number "\)" ";" << FObj.SetFormTitle (_STOSID(S2->getText(), S2->getLine())); >> ( vfrStatementImage | vfrStatementLocked | @@ -1460,10 +1460,10 @@ EFI_GUID Guid; >> F:FormMap << FMapObj = new CIfrFormMap(); FMapObj->SetLineNo(F->getLine()); >> - FormId "=" S1:Number "," << _PCATCH(FMapObj->SetFormId (_STOFID(S1->getText())), S1); >> + FormId "=" S1:Number "," << _PCATCH(FMapObj->SetFormId (_STOFID(S1->getText(), S1->getLine())), S1); >> ( MapTitle "=" "STRING_TOKEN" "\(" S2:Number "\)" ";" - MapGuid "=" guidDefinition[Guid] ";" << FMapObj->SetFormMapMethod (_STOFID(S2->getText()), &Guid); FormMapMethodNumber ++; >> + MapGuid "=" guidDefinition[Guid] ";" << FMapObj->SetFormMapMethod (_STOFID(S2->getText(), S2->getLine()), &Guid); FormMapMethodNumber ++; >> )* << if (FormMapMethodNumber == 0) {_PCATCH (VFR_RETURN_INVALID_PARAMETER, F->getLine(), "No MapMethod is set for FormMap!");} delete FMapObj;>> ( vfrStatementImage | @@ -1642,7 +1642,7 @@ vfrStatementSubTitle : << CIfrSubtitle SObj; >> L:Subtitle << SObj.SetLineNo(L->getLine()); >> - Text "=" "STRING_TOKEN" "\(" S:Number "\)" << SObj.SetPrompt (_STOSID(S->getText())); >> + Text "=" "STRING_TOKEN" "\(" S:Number "\)" << SObj.SetPrompt (_STOSID(S->getText(), S->getLine())); >> { "," FLAGS "=" vfrSubtitleFlags[SObj] } @@ -1663,7 +1663,7 @@ ; subtitleFlagsField [UINT8 & Flags] : - N:Number << $Flags |= _STOU8(N->getText()); >> + N:Number << $Flags |= _STOU8(N->getText(), N->getLine()); >> | "HORIZONTAL" << $Flags |= 0x01; >> ; @@ -1677,7 +1677,7 @@ Help "=" "STRING_TOKEN" "\(" S1:Number "\)" "," Text "=" "STRING_TOKEN" "\(" S2:Number "\)" { - "," Text "=" "STRING_TOKEN" "\(" S3:Number "\)" << TxtTwo = _STOSID(S3->getText()); >> + "," Text "=" "STRING_TOKEN" "\(" S3:Number "\)" << TxtTwo = _STOSID(S3->getText(), S3->getLine()); >> } { "," F:FLAGS "=" staticTextFlagsField[Flags] ( "\|" staticTextFlagsField[Flags] )* @@ -1689,16 +1689,16 @@ mCVfrQuestionDB.RegisterQuestion (NULL, NULL, QId); AObj.SetLineNo (F->getLine()); AObj.SetQuestionId (QId); - AObj.SetPrompt (_STOSID(S2->getText())); - AObj.SetHelp (_STOSID(S1->getText())); + AObj.SetPrompt (_STOSID(S2->getText(), S2->getLine())); + AObj.SetHelp (_STOSID(S1->getText(), S1->getLine())); _PCATCH(AObj.SetFlags (Flags), F->getLine()); AssignQuestionKey (AObj, KN); CRT_END_OP (KN); } else { CIfrText TObj; TObj.SetLineNo (T->getLine()); - TObj.SetHelp (_STOSID(S1->getText())); - TObj.SetPrompt (_STOSID(S2->getText())); + TObj.SetHelp (_STOSID(S1->getText(), S1->getLine())); + TObj.SetPrompt (_STOSID(S2->getText(), S2->getLine())); TObj.SetTextTwo (TxtTwo); } >> @@ -1707,7 +1707,7 @@ ; staticTextFlagsField[UINT8 & HFlags] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | questionheaderFlagsField[HFlags] ; @@ -1741,9 +1741,9 @@ Question "=" QN1:Number "," << RefType = 4; - DevPath = _STOSID(P->getText()); - FId = _STOFID(F1->getText()); - QId = _STOQID(QN1->getText()); + DevPath = _STOSID(P->getText(), P->getLine()); + FId = _STOFID(F1->getText(), F1->getLine()); + QId = _STOQID(QN1->getText(), QN1->getLine()); >> ) | @@ -1753,13 +1753,13 @@ Question "=" QN2:Number "," << RefType = 3; - FId = _STOFID(F2->getText()); - QId = _STOQID(QN2->getText()); + FId = _STOFID(F2->getText(), F2->getLine()); + QId = _STOQID(QN2->getText(), QN2->getLine()); >> ) | ( - FormId "=" F3:Number "," << RefType = 2; FId = _STOFID(F3->getText()); >> + FormId "=" F3:Number "," << RefType = 2; FId = _STOFID(F3->getText(), F3->getLine()); >> Question "=" ( QN3:StringIdentifier "," << @@ -1768,14 +1768,14 @@ _PCATCH(VFR_RETURN_UNDEFINED, QN3); } >> - | QN4:Number "," << QId = _STOQID(QN4->getText()); >> + | QN4:Number "," << QId = _STOQID(QN4->getText(), QN4->getLine()); >> ) ) | ( F4:Number "," << RefType = 1; - FId = _STOFID(F4->getText()); + FId = _STOFID(F4->getText(), F4->getLine()); >> ) } @@ -1857,7 +1857,7 @@ ; gotoFlagsField[UINT8 & HFlags] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | questionheaderFlagsField[HFlags] ; @@ -1989,9 +1989,9 @@ // // set question flag // - $LFlags |= _STOU8(N->getText()); + $LFlags |= _STOU8(N->getText(), N->getLine()); } else { - _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); + _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); } >> | D:"DEFAULT" << @@ -2035,7 +2035,7 @@ L:Action << AObj.SetLineNo(L->getLine()); >> vfrQuestionHeader[AObj] "," { F:FLAGS "=" vfrActionFlags[AObj, F->getLine()] "," } - Config "=" "STRING_TOKEN" "\(" S:Number "\)" "," << AObj.SetQuestionConfig (_STOSID(S->getText())); >> + Config "=" "STRING_TOKEN" "\(" S:Number "\)" "," << AObj.SetQuestionConfig (_STOSID(S->getText(), S->getLine())); >> vfrStatementQuestionTagList E:EndAction << CRT_END_OP (E); >> ";" @@ -2048,7 +2048,7 @@ ; actionFlagsField[UINT8 & HFlags] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | questionheaderFlagsField[HFlags] ; @@ -2095,8 +2095,8 @@ mCVfrQuestionDB.RegisterOldDateQuestion (VarIdStr[0], VarIdStr[1], VarIdStr[2], QId); DObj.SetQuestionId (QId); DObj.SetFlags (EFI_IFR_QUESTION_FLAG_DEFAULT, QF_DATE_STORAGE_TIME); - DObj.SetPrompt (_STOSID(YP->getText())); - DObj.SetHelp (_STOSID(YH->getText())); + DObj.SetPrompt (_STOSID(YP->getText(), YP->getLine())); + DObj.SetHelp (_STOSID(YH->getText(), YH->getLine())); if (VarIdStr[0] != NULL) { delete VarIdStr[0]; } if (VarIdStr[1] != NULL) { delete VarIdStr[1]; } if (VarIdStr[2] != NULL) { delete VarIdStr[2]; } >> << {CIfrDefault DefaultObj(Size, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_DATE, Val); DefaultObj.SetLineNo(L->getLine());} >> @@ -2115,19 +2115,19 @@ "default" "=" N:Number "," << switch (KeyValue) { case 0: - D.Year = _STOU16(N->getText()); - if (D.Year < _STOU16 (MinN->getText()) || D.Year > _STOU16 (MaxN->getText())) { + D.Year = _STOU16(N->getText(), N->getLine()); + if (D.Year < _STOU16 (MinN->getText(), MinN->getLine()) || D.Year > _STOU16 (MaxN->getText(), MaxN->getLine())) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default value must be between Min year and Max year."); } break; case 1: - D.Month = _STOU8(N->getText()); + D.Month = _STOU8(N->getText(), N->getLine()); if (D.Month < 1 || D.Month > 12) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default value must be between 1 and 12."); } break; case 2: - D.Day = _STOU8(N->getText()); + D.Day = _STOU8(N->getText(), N->getLine()); if (D.Day < 1 || D.Day > 31) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default value must be between 1 and 31."); } @@ -2144,7 +2144,7 @@ ; dateFlagsField [UINT8 & Flags] : - N:Number << $Flags |= _STOU8(N->getText()); >> + N:Number << $Flags |= _STOU8(N->getText(), N->getLine()); >> | "YEAR_SUPPRESS" << $Flags |= 0x01; >> | "MONTH_SUPPRESS" << $Flags |= 0x02; >> | "DAY_SUPPRESS" << $Flags |= 0x04; >> @@ -2168,35 +2168,35 @@ Minimum "=" I:Number "," << switch (_GET_CURRQEST_DATATYPE()) { - case EFI_IFR_TYPE_NUM_SIZE_64 : MinU8 = _STOU64(I->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_32 : MinU4 = _STOU32(I->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_16 : MinU2 = _STOU16(I->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_8 : MinU1 = _STOU8(I->getText()); break; + case EFI_IFR_TYPE_NUM_SIZE_64 : MinU8 = _STOU64(I->getText(), I->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_32 : MinU4 = _STOU32(I->getText(), I->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_16 : MinU2 = _STOU16(I->getText(), I->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_8 : MinU1 = _STOU8(I->getText(), I->getLine()); break; } >> Maximum "=" A:Number "," << switch (_GET_CURRQEST_DATATYPE()) { case EFI_IFR_TYPE_NUM_SIZE_64 : - MaxU8 = _STOU64(A->getText()); + MaxU8 = _STOU64(A->getText(), A->getLine()); if (MaxU8 < MinU8) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum"); } break; case EFI_IFR_TYPE_NUM_SIZE_32 : - MaxU4 = _STOU32(A->getText()); + MaxU4 = _STOU32(A->getText(), A->getLine()); if (MaxU4 < MinU4) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum"); } break; case EFI_IFR_TYPE_NUM_SIZE_16 : - MaxU2 = _STOU16(A->getText()); + MaxU2 = _STOU16(A->getText(), A->getLine()); if (MaxU2 < MinU2) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum"); } break; case EFI_IFR_TYPE_NUM_SIZE_8 : - MaxU1 = _STOU8(A->getText()); + MaxU1 = _STOU8(A->getText(), A->getLine()); if (MaxU1 < MinU1) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum"); } @@ -2207,10 +2207,10 @@ STEP "=" S:Number "," << switch (_GET_CURRQEST_DATATYPE()) { - case EFI_IFR_TYPE_NUM_SIZE_64 : StepU8 = _STOU64(S->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_32 : StepU4 = _STOU32(S->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_16 : StepU2 = _STOU16(S->getText()); break; - case EFI_IFR_TYPE_NUM_SIZE_8 : StepU1 = _STOU8(S->getText()); break; + case EFI_IFR_TYPE_NUM_SIZE_64 : StepU8 = _STOU64(S->getText(), S->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_32 : StepU4 = _STOU32(S->getText(), S->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_16 : StepU2 = _STOU16(S->getText(), S->getLine()); break; + case EFI_IFR_TYPE_NUM_SIZE_8 : StepU1 = _STOU8(S->getText(), S->getLine()); break; } >> } @@ -2303,7 +2303,7 @@ ; numericFlagsField [UINT8 & HFlags, UINT8 & LFlags, BOOLEAN & IsSetType, BOOLEAN & IsDisplaySpecified] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | "NUMERIC_SIZE_1" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_1; IsSetType = TRUE;>> | "NUMERIC_SIZE_2" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_2; IsSetType = TRUE;>> | "NUMERIC_SIZE_4" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_4; IsSetType = TRUE;>> @@ -2412,8 +2412,8 @@ } MinSize "=" MIN:Number "," << VarArraySize = _GET_CURRQEST_ARRAY_SIZE(); - StringMinSize = _STOU8(MIN->getText()); - if (_STOU64(MIN->getText()) > StringMinSize) { + StringMinSize = _STOU8(MIN->getText(), MIN->getLine()); + if (_STOU64(MIN->getText(), MIN->getLine()) > StringMinSize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "String MinSize takes only one byte, which can't be larger than 0xFF."); } else if (VarArraySize != 0 && StringMinSize > VarArraySize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "String MinSize can't be larger than the max number of elements in string array."); @@ -2421,8 +2421,8 @@ SObj.SetMinSize (StringMinSize); >> MaxSize "=" MAX:Number "," << - StringMaxSize = _STOU8(MAX->getText()); - if (_STOU64(MAX->getText()) > StringMaxSize) { + StringMaxSize = _STOU8(MAX->getText(), MAX->getLine()); + if (_STOU64(MAX->getText(), MAX->getLine()) > StringMaxSize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize takes only one byte, which can't be larger than 0xFF."); } else if (VarArraySize != 0 && StringMaxSize > VarArraySize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize can't be larger than the max number of elements in string array."); @@ -2446,7 +2446,7 @@ ; stringFlagsField [UINT8 & HFlags, UINT8 & LFlags] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | "MULTI_LINE" << $LFlags = 0x01; >> | questionheaderFlagsField[HFlags] ; @@ -2466,8 +2466,8 @@ } MinSize "=" MIN:Number "," << VarArraySize = _GET_CURRQEST_ARRAY_SIZE(); - PasswordMinSize = _STOU16(MIN->getText()); - if (_STOU64(MIN->getText()) > PasswordMinSize) { + PasswordMinSize = _STOU16(MIN->getText(), MIN->getLine()); + if (_STOU64(MIN->getText(), MIN->getLine()) > PasswordMinSize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "Password MinSize takes only two byte, which can't be larger than 0xFFFF."); } else if (VarArraySize != 0 && PasswordMinSize > VarArraySize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "Password MinSize can't be larger than the max number of elements in password array."); @@ -2475,8 +2475,8 @@ PObj.SetMinSize (PasswordMinSize); >> MaxSize "=" MAX:Number "," << - PasswordMaxSize = _STOU16(MAX->getText()); - if (_STOU64(MAX->getText()) > PasswordMaxSize) { + PasswordMaxSize = _STOU16(MAX->getText(), MAX->getLine()); + if (_STOU64(MAX->getText(), MAX->getLine()) > PasswordMaxSize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize takes only two byte, which can't be larger than 0xFFFF."); } else if (VarArraySize != 0 && PasswordMaxSize > VarArraySize) { _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize can't be larger than the max number of elements in password array."); @@ -2498,7 +2498,7 @@ ; passwordFlagsField [UINT8 & HFlags] : - N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> + N:Number << _PCATCH(_STOU8(N->getText(), N->getLine()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> | questionheaderFlagsField[HFlags] ; @@ -2515,12 +2515,12 @@ >> { MaxContainers "=" M:Number "," << - if (_STOU64(M->getText()) > _STOU8(M->getText())) { + ... [truncated message content] |