From dd8d824a560a27b00ff0dc111a0b1744d4418dda Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Mon, 21 Apr 2008 22:35:30 +0000 Subject: [PATCH] Issue 2665: On Windows, sys.stderr does not contain a valid file when running without a console. It seems to work, but will fail at the first flush. This causes IDLE to crash when too many warnings are printed. Will backport. --- Lib/idlelib/NEWS.txt | 8 ++++++++ Lib/idlelib/configHandler.py | 20 ++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index abfc0384a7f..7e2ce38b201 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -1,3 +1,11 @@ +What's New in IDLE 2.6a3? +========================= + +*Release date: XX-XXX-2008* + +- Issue #2665: On Windows, an IDLE installation upgraded from an old version + would not start if a custom theme was defined. + What's New in IDLE 2.6a1? ========================= diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py index 681ff1eedda..3fc2a606fe6 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -204,7 +204,10 @@ class IdleConf: if not os.path.exists(userDir): warn = ('\n Warning: os.path.expanduser("~") points to\n '+ userDir+',\n but the path does not exist.\n') - sys.stderr.write(warn) + try: + sys.stderr.write(warn) + except IOError: + pass userDir = '~' if userDir == "~": # still no path to home! # traditionally IDLE has defaulted to os.getcwd(), is this adequate? @@ -247,7 +250,10 @@ class IdleConf: ' from section %r.\n' ' returning default value: %r\n' % (option, section, default)) - sys.stderr.write(warning) + try: + sys.stderr.write(warning) + except IOError: + pass return default def SetOption(self, configType, section, option, value): @@ -356,7 +362,10 @@ class IdleConf: '\n from theme %r.\n' ' returning default value: %r\n' % (element, themeName, theme[element])) - sys.stderr.write(warning) + try: + sys.stderr.write(warning) + except IOError: + pass colour=cfgParser.Get(themeName,element,default=theme[element]) theme[element]=colour return theme @@ -610,7 +619,10 @@ class IdleConf: '\n from key set %r.\n' ' returning default value: %r\n' % (event, keySetName, keyBindings[event])) - sys.stderr.write(warning) + try: + sys.stderr.write(warning) + except IOError: + pass return keyBindings def GetExtraHelpSourceList(self,configSet):