[Patches] [ python-Patches-769142 ] CallTip trimming may loop forever.
SourceForge.net
noreply@sourceforge.net
Sun, 13 Jul 2003 03:27:25 -0700
Patches item #769142, was opened at 2003-07-10 09:13
Message generated for change (Comment added) made by rhettinger
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=769142&group_id=5470
Category: IDLE
Group: Python 2.3
>Status: Closed
>Resolution: Fixed
Priority: 7
Submitted By: Scott David Daniels (scott_daniels)
>Assigned to: Kurt B. Kaiser (kbk)
Summary: CallTip trimming may loop forever.
Initial Comment:
(also applies to 2.2.x)
While trying to understand someone else's half-developed code, I found
an interesting problem in Idle. This bug is far nastier in 2.3 (which
I was using at the time).
testcase.py:
def function(arg):
'''
'''
return 1
In Idle if you type
>>> import testcase
>>> testcase.function(
The code will loop trying to place a calltip in 2.3 (in 2.2.0, it
raises an exception).
After investigation, I found the following code:
python/dist/src/Lib/idlelib/CallTips.py:
... while doc[:1] in " \t\n":
doc = doc[1:]
pos = doc.find("\n")
...
With the new string semantics for 'in', this loop will be
checking ('' in ' \t\n') (a bad state of affairs).
The following patch should fix it:
*** CallTips.py Thu Jun 26 01:16:56 2003
--- CallTips.py_old Tue Dec 31 07:59:14 2002
***************
*** 164,175 ****
# See if we can use the docstring
doc = getattr(ob, "__doc__", "")
if doc:
! doc = doc.lstrip()
pos = doc.find("\n")
if pos < 0 or pos > 70:
pos = 70
! if argText and doc:
argText += "\n"
! argText = (argText + doc[:pos]).rstrip()
return argText
--- 164,176 ----
# See if we can use the docstring
doc = getattr(ob, "__doc__", "")
if doc:
! while doc[:1] in " \t\n":
! doc = doc[1:]
pos = doc.find("\n")
if pos < 0 or pos > 70:
pos = 70
! if argText:
argText += "\n"
! argText += doc[:pos]
return argText
Unit tests are tricky (since the 2.3 problem is an infinite loop):
Attached is a test that won't get stuck in a loop.
-Scott David Daniels
Scott.Daniels@Acm.Org
----------------------------------------------------------------------
>Comment By: Raymond Hettinger (rhettinger)
Date: 2003-07-13 05:27
Message:
Logged In: YES
user_id=80475
See Lib/idlelib/CallTips.py 1.10
Assigning to Kurt for backport.
Good catch and nice patch.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=769142&group_id=5470