From a09f4c91f785e36f0987aa3a6d7656ba51e6aeda Mon Sep 17 00:00:00 2001 From: Yunhua Feng Date: Fri, 27 Jul 2018 16:02:05 +0800 Subject: BaseTools: fix the open file's read and write bugs Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng Reviewed-by: Liming Gao --- BaseTools/Source/Python/Common/Misc.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'BaseTools/Source/Python/Common/Misc.py') diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index b91f06b19e..1d62a8b56b 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -459,8 +459,14 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): if os.path.exists(File): try: - if Content == open(File, "rb").read(): - return False + if isinstance(Content, bytes): + with open(File, "rb") as f: + if Content == f.read(): + return False + else: + with open(File, "r") as f: + if Content == f.read(): + return False except: EdkLogger.error(None, FILE_OPEN_FAILURE, ExtraData=File) @@ -480,13 +486,19 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): if not SaveFileToDisk(File, Content): EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData=File) except: - Fd = open(File, "wb") - Fd.write(Content) - Fd.close() + if isinstance(Content, bytes): + with open(File, "wb") as Fd: + Fd.write(Content) + else: + with open(File, "w") as Fd: + Fd.write(Content) else: - Fd = open(File, "wb") - Fd.write(Content) - Fd.close() + if isinstance(Content, bytes): + with open(File, "wb") as Fd: + Fd.write(Content) + else: + with open(File, "w") as Fd: + Fd.write(Content) except IOError as X: EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData='IOError %s' % X) -- cgit v1.2.3