From f305bd3ea25f58171b00afcef386cdbf16336890 Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Mon, 21 Apr 2008 22:42: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 silently crash when too many warnings are printed. Backport of r62448. --- Lib/idlelib/NEWS.txt | 5 ++++- Lib/idlelib/configHandler.py | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 92ff0ff1cd..7329ee9d73 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -1,8 +1,11 @@ What's New in IDLE 1.2.3c1? -========================= +=========================== *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 1.2.2? ========================= diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py index 3ddb4ed82d..fada4eb015 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -207,7 +207,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? @@ -248,7 +251,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): @@ -357,7 +363,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 @@ -611,7 +620,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): -- 2.40.0