From: <yd...@us...> - 2014-06-09 10:28:03
|
Revision: 2665 http://sourceforge.net/p/edk2-buildtools/code/2665 Author: ydong10 Date: 2014-06-09 10:27:59 +0000 (Mon, 09 Jun 2014) Log Message: ----------- Add report error message logic for string to integer functions in VfrCompiler (STOU8, STOU16, STOU32, STOU64). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Aaron Pop <aa...@am...> Reviewed-by: Eric Dong <eri...@in...> Modified Paths: -------------- trunk/BaseTools/Source/C/VfrCompile/VfrFormPkg.h trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g Modified: trunk/BaseTools/Source/C/VfrCompile/VfrFormPkg.h =================================================================== --- trunk/BaseTools/Source/C/VfrCompile/VfrFormPkg.h 2014-05-19 09:53:07 UTC (rev 2664) +++ trunk/BaseTools/Source/C/VfrCompile/VfrFormPkg.h 2014-06-09 10:27:59 UTC (rev 2665) @@ -2,7 +2,7 @@ The definition of CFormPkg's member function -Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR> +Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -1343,7 +1343,7 @@ UpdateCIfrMinMaxStepData(&mNumeric->data); } - EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) { + EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags, BOOLEAN DisplaySettingsSpecified = FALSE) { EFI_VFR_RETURN_CODE Ret; Ret = CIfrQuestionHeader::SetFlags (HFlags); @@ -1351,10 +1351,10 @@ return Ret; } - if (LFlags & EFI_IFR_DISPLAY) { + if (DisplaySettingsSpecified == FALSE) { + mNumeric->Flags = LFlags | EFI_IFR_DISPLAY_UINT_DEC; + } else { mNumeric->Flags = LFlags; - } else { - mNumeric->Flags = LFlags | EFI_IFR_DISPLAY_UINT_DEC; } return VFR_RETURN_SUCCESS; } Modified: trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g =================================================================== --- trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2014-05-19 09:53:07 UTC (rev 2664) +++ trunk/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2014-06-09 10:27:59 UTC (rev 2665) @@ -1,5 +1,5 @@ /*++ -Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR> +Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -2277,8 +2277,9 @@ UINT8 HFlags = 0; EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID; BOOLEAN IsSetType = FALSE; + BOOLEAN IsDisplaySpecified = FALSE; >> - numericFlagsField[HFlags, LFlags, IsSetType] ( "\|" numericFlagsField[HFlags, LFlags, IsSetType] )* + numericFlagsField[HFlags, LFlags, IsSetType, IsDisplaySpecified] ( "\|" numericFlagsField[HFlags, LFlags, IsSetType, IsDisplaySpecified ] )* << //check data type flag if (_GET_CURRQEST_VARTINFO().mVarStoreId != EFI_VARSTORE_ID_INVALID) { @@ -2297,19 +2298,19 @@ } else if (IsSetType){ _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE; } - _PCATCH(NObj.SetFlags (HFlags, LFlags), LineNum); + _PCATCH(NObj.SetFlags (HFlags, LFlags, IsDisplaySpecified), LineNum); >> ; -numericFlagsField [UINT8 & HFlags, UINT8 & LFlags, BOOLEAN & IsSetType] : +numericFlagsField [UINT8 & HFlags, UINT8 & LFlags, BOOLEAN & IsSetType, BOOLEAN & IsDisplaySpecified] : N:Number << _PCATCH(_STOU8(N->getText()) == 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;>> | "NUMERIC_SIZE_8" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_8; IsSetType = TRUE;>> - | "DISPLAY_INT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_INT_DEC; >> - | "DISPLAY_UINT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_DEC; >> - | "DISPLAY_UINT_HEX" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_HEX; >> + | "DISPLAY_INT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_INT_DEC; IsDisplaySpecified = TRUE;>> + | "DISPLAY_UINT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_DEC; IsDisplaySpecified = TRUE;>> + | "DISPLAY_UINT_HEX" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_HEX; IsDisplaySpecified = TRUE;>> | questionheaderFlagsField[HFlags] ; @@ -2366,8 +2367,9 @@ UINT8 HFlags = 0; EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID; BOOLEAN IsSetType = FALSE; + BOOLEAN IsDisplaySpecified = FALSE; >> - numericFlagsField[HFlags, LFlags, IsSetType] ( "\|" numericFlagsField[HFlags, LFlags, IsSetType] )* + numericFlagsField[HFlags, LFlags, IsSetType, IsDisplaySpecified] ( "\|" numericFlagsField[HFlags, LFlags, IsSetType, IsDisplaySpecified] )* << //check data type flag if (_GET_CURRQEST_VARTINFO().mVarStoreId != EFI_VARSTORE_ID_INVALID) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |