summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2011-09-14 21:56:32 (GMT)
committerNed Deily <nad@acm.org>2011-09-14 21:56:32 (GMT)
commit86ca04ccc72820b3233f0010ad4c6f91208a7e18 (patch)
treef543737135dd972ef95e79fb93f31159463e40eb /Lib/idlelib
parent02ba6c291615616cc1dfcacd575eb52fafc2fb43 (diff)
parent79746426c439a8a163d95381ffffa1b2fd34348e (diff)
downloadcpython-86ca04ccc72820b3233f0010ad4c6f91208a7e18.zip
cpython-86ca04ccc72820b3233f0010ad4c6f91208a7e18.tar.gz
cpython-86ca04ccc72820b3233f0010ad4c6f91208a7e18.tar.bz2
Issue #9871: Prevent IDLE 3 crash when given byte stings
with invalid hex escape sequences, like b'\x0'. (Original patch by Claudiu Popa.)
Diffstat (limited to 'Lib/idlelib')
-rw-r--r--Lib/idlelib/PyShell.py6
-rw-r--r--Lib/idlelib/ScriptBinding.py8
2 files changed, 7 insertions, 7 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index da74729..43e08f2 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -643,9 +643,9 @@ class ModifiedInterpreter(InteractiveInterpreter):
text = tkconsole.text
text.tag_remove("ERROR", "1.0", "end")
type, value, tb = sys.exc_info()
- msg = value.msg or "<no detail available>"
- lineno = value.lineno or 1
- offset = value.offset or 0
+ msg = getattr(value, 'msg', '') or value or "<no detail available>"
+ lineno = getattr(value, 'lineno', '') or 1
+ offset = getattr(value, 'offset', '') or 0
if offset == 0:
lineno += 1 #mark end of offending line
if lineno == 1:
diff --git a/Lib/idlelib/ScriptBinding.py b/Lib/idlelib/ScriptBinding.py
index 915e56e..26becce 100644
--- a/Lib/idlelib/ScriptBinding.py
+++ b/Lib/idlelib/ScriptBinding.py
@@ -101,10 +101,10 @@ class ScriptBinding:
try:
# If successful, return the compiled code
return compile(source, filename, "exec")
- except (SyntaxError, OverflowError) as value:
- msg = value.msg or "<no detail available>"
- lineno = value.lineno or 1
- offset = value.offset or 0
+ except (SyntaxError, OverflowError, ValueError) as value:
+ msg = getattr(value, 'msg', '') or value or "<no detail available>"
+ lineno = getattr(value, 'lineno', '') or 1
+ offset = getattr(value, 'offset', '') or 0
if offset == 0:
lineno += 1 #mark end of offending line
pos = "0.0 + %d lines + %d chars" % (lineno-1, offset-1)