diff -r 180ae0154322 -r 5a93c6cdc989 eric5.py --- a/eric5.py Sat Mar 22 13:06:32 2014 +0100 +++ b/eric5.py Sat Mar 22 14:44:39 2014 +0100 @@ -14,7 +14,7 @@ from __future__ import unicode_literals try: # Only for Py2 - import StringIO as io + import StringIO as io # __IGNORE_EXCEPTION__ import sip sip.setapi('QString', 2) sip.setapi('QVariant', 2) @@ -22,6 +22,7 @@ import Utilities.compatibility_fixes # __IGNORE_WARNING__ except ImportError: import io # __IGNORE_WARNING__ + basestring = str import sys import os @@ -100,6 +101,7 @@ @param excValue exception value @param tracebackobj traceback object """ + import xml.sax.saxutils from UI.Info import BugAddress import Utilities import Globals @@ -122,10 +124,13 @@ if distroInfo: versionInfo += "{0}\n{1}".format(separator, distroInfo) - tbinfofile = io.StringIO() - traceback.print_tb(tracebackobj, None, tbinfofile) - tbinfofile.seek(0) - tbinfo = tbinfofile.read() + if isinstance(excType, basestring): + tbinfo = tracebackobj + else: + tbinfofile = io.StringIO() + traceback.print_tb(tracebackobj, None, tbinfofile) + tbinfofile.seek(0) + tbinfo = tbinfofile.read() errmsg = '{0}: \n{1}'.format(str(excType), str(excValue)) sections = [separator, timeString, separator, errmsg, separator, tbinfo] msg = '\n'.join(sections) @@ -136,7 +141,11 @@ f.close() except IOError: pass - qWarning(str(notice) + str(msg) + str(versionInfo)) + + warning = str(notice) + str(msg) + str(versionInfo) + # Escape &<> otherwise it's not visible in the error dialog + warning = xml.sax.saxutils.escape(warning) + qWarning(warning) def uiStartUp():