Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 290d31e

Browse files
committed
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
when no arguments are passed
1 parent 54e0eab commit 290d31e

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

Lib/test/test_profilehooks.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import generators
22

3+
from test_support import TestFailed
4+
35
import pprint
46
import sys
57
import unittest
@@ -329,6 +331,10 @@ def protect(f, p):
329331

330332

331333
def capture_events(callable, p=None):
334+
try: sys.setprofile()
335+
except TypeError: pass
336+
else: raise TestFailed, 'sys.setprofile() did not raise TypeError'
337+
332338
if p is None:
333339
p = HookWatcher()
334340
sys.setprofile(p.callback)

Lib/test/test_scope.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,10 @@ class TestClass:
471471
adaptgetter("foo", TestClass, (1, ""))
472472
sys.settrace(None)
473473

474+
try: sys.settrace()
475+
except TypeError: pass
476+
else: raise TestFailed, 'sys.settrace() did not raise TypeError'
477+
474478
print "20. eval and exec with free variables"
475479

476480
def f(x):

Python/sysmodule.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,10 +564,10 @@ static PyMethodDef sys_methods[] = {
564564
{"setdlopenflags", sys_setdlopenflags, METH_VARARGS,
565565
setdlopenflags_doc},
566566
#endif
567-
{"setprofile", sys_setprofile, METH_OLDARGS, setprofile_doc},
567+
{"setprofile", sys_setprofile, METH_O, setprofile_doc},
568568
{"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS,
569569
setrecursionlimit_doc},
570-
{"settrace", sys_settrace, METH_OLDARGS, settrace_doc},
570+
{"settrace", sys_settrace, METH_O, settrace_doc},
571571
{NULL, NULL} /* sentinel */
572572
};
573573

0 commit comments

Comments
 (0)