From a31c0bfacfeaa93605c4d9d811896086b8fc6c8e Mon Sep 17 00:00:00 2001 From: rtw1x1 Date: Wed, 21 Jan 2026 08:50:33 +0000 Subject: [PATCH] fix: Python shutdown errors --- assets/root/intrologin.py | 28 ++++++++++++++-------------- assets/root/mousemodule.py | 3 ++- assets/root/musicinfo.py | 10 ++++------ assets/root/system.py | 3 ++- assets/root/ui.py | 3 ++- assets/root/uitaskbar.py | 6 ++++-- assets/root/utils.py | 8 ++++---- 7 files changed, 32 insertions(+), 29 deletions(-) diff --git a/assets/root/intrologin.py b/assets/root/intrologin.py index 239d8920..bd1dba42 100644 --- a/assets/root/intrologin.py +++ b/assets/root/intrologin.py @@ -325,30 +325,30 @@ class LoginWindow(ui.ScriptWindow): def __SaveChannelInfo(self): try: - file=open("channel.inf", "w") - file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID())) + with open("channel.inf", "w") as file: + file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID())) except: print "LoginWindow.__SaveChannelInfo - SaveError" def __LoadChannelInfo(self): try: - file=open("channel.inf") - lines=file.readlines() - - if len(lines)>0: - tokens=lines[0].split() + with open("channel.inf") as file: + lines=file.readlines() - selServerID=int(tokens[0]) - selChannelID=int(tokens[1]) - - if len(tokens) == 3: - regionID = int(tokens[2]) + if len(lines)>0: + tokens=lines[0].split() - return regionID, selServerID, selChannelID + selServerID=int(tokens[0]) + selChannelID=int(tokens[1]) + + if len(tokens) == 3: + regionID = int(tokens[2]) + + return regionID, selServerID, selChannelID except: print "LoginWindow.__LoadChannelInfo - OpenError" - return -1, -1, -1 + return -1, -1, -1 def __ExitGame(self): app.Exit() diff --git a/assets/root/mousemodule.py b/assets/root/mousemodule.py index 1413f4b8..711febcb 100644 --- a/assets/root/mousemodule.py +++ b/assets/root/mousemodule.py @@ -27,7 +27,8 @@ class CursorImage(object): self.LoadImage(imageName) def __del__(self): - grpImage.Delete(self.handle) + if grpImage and self.handle: + grpImage.Delete(self.handle) def LoadImage(self, imageName): try: diff --git a/assets/root/musicinfo.py b/assets/root/musicinfo.py index 2b980fbf..4eb8ff05 100644 --- a/assets/root/musicinfo.py +++ b/assets/root/musicinfo.py @@ -9,21 +9,19 @@ def SaveLastPlayFieldMusic(): global fieldMusic try: - lastPlayFile=open("BGM/lastplay.inf", "w") + with open("BGM/lastplay.inf", "w") as lastPlayFile: + lastPlayFile.write(fieldMusic) except IOError: return - lastPlayFile.write(fieldMusic) - def LoadLastPlayFieldMusic(): global fieldMusic try: - lastPlayFile=open("BGM/lastplay.inf", "r") + with open("BGM/lastplay.inf", "r") as lastPlayFile: + fieldMusic=lastPlayFile.read() except IOError: return - fieldMusic=lastPlayFile.read() - diff --git a/assets/root/system.py b/assets/root/system.py index 79df485d..9f2a8ec2 100644 --- a/assets/root/system.py +++ b/assets/root/system.py @@ -22,7 +22,8 @@ class LogBoxFile: self.restore() def restore(self): - sys.stderr = self.stderrSave + if sys: + sys.stderr = self.stderrSave def write(self, msg): self.msg = self.msg + msg diff --git a/assets/root/ui.py b/assets/root/ui.py index 36645afc..c5c8cc0a 100644 --- a/assets/root/ui.py +++ b/assets/root/ui.py @@ -98,7 +98,8 @@ class Window(object): self.Hide() def __del__(self): - wndMgr.Destroy(self.hWnd) + if wndMgr and self.hWnd: + wndMgr.Destroy(self.hWnd) def RegisterWindow(self, layer): self.hWnd = wndMgr.Register(self, layer) diff --git a/assets/root/uitaskbar.py b/assets/root/uitaskbar.py index d413e3df..d0b2f644 100644 --- a/assets/root/uitaskbar.py +++ b/assets/root/uitaskbar.py @@ -26,11 +26,13 @@ def GetMouseButtonSettings(): def SaveMouseButtonSettings(): global MOUSE_SETTINGS - open("mouse.cfg", "w").write("%s\t%s" % tuple(MOUSE_SETTINGS)) + with open("mouse.cfg", "w") as f: + f.write("%s\t%s" % tuple(MOUSE_SETTINGS)) def LoadMouseButtonSettings(): global MOUSE_SETTINGS - tokens = open("mouse.cfg", "r").read().split() + with open("mouse.cfg", "r") as f: + tokens = f.read().split() if len(tokens) != 2: raise RuntimeError, "MOUSE_SETTINGS_FILE_ERROR" diff --git a/assets/root/utils.py b/assets/root/utils.py index 7906f29c..90c0b2e3 100644 --- a/assets/root/utils.py +++ b/assets/root/utils.py @@ -46,10 +46,10 @@ class Sandbox(object): sys.modules[prevented_module_name] = None try: - f = open(filename, 'rb') - data = f.read() - code = compile(data, filename, 'exec') - exec code in dic + with open(filename, 'rb') as f: + data = f.read() + code = compile(data, filename, 'exec') + exec code in dic except Exception, e: sys.stderr.write(e) finally: