SF #506611, fix sys.setprofile(), sys.settrace() core dumps
when no arguments are passed
diff --git a/Lib/test/test_profilehooks.py b/Lib/test/test_profilehooks.py
index cc97df8..fa38d30 100644
--- a/Lib/test/test_profilehooks.py
+++ b/Lib/test/test_profilehooks.py
@@ -1,5 +1,7 @@
 from __future__ import generators
 
+from test_support import TestFailed
+
 import pprint
 import sys
 import unittest
@@ -329,6 +331,10 @@
 
 
 def capture_events(callable, p=None):
+    try: sys.setprofile()
+    except TypeError: pass
+    else: raise TestFailed, 'sys.setprofile() did not raise TypeError'
+
     if p is None:
         p = HookWatcher()
     sys.setprofile(p.callback)
diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py
index bb29f8b..85cfed4 100644
--- a/Lib/test/test_scope.py
+++ b/Lib/test/test_scope.py
@@ -471,6 +471,10 @@
 adaptgetter("foo", TestClass, (1, ""))
 sys.settrace(None)
 
+try: sys.settrace()
+except TypeError: pass
+else: raise TestFailed, 'sys.settrace() did not raise TypeError'
+
 print "20. eval and exec with free variables"
 
 def f(x):
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 90338de..3448e6a 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -564,10 +564,10 @@
 	{"setdlopenflags", sys_setdlopenflags, METH_VARARGS, 
 	 setdlopenflags_doc},
 #endif
-	{"setprofile",	sys_setprofile, METH_OLDARGS, setprofile_doc},
+	{"setprofile",	sys_setprofile, METH_O, setprofile_doc},
 	{"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS,
 	 setrecursionlimit_doc},
-	{"settrace",	sys_settrace, METH_OLDARGS, settrace_doc},
+	{"settrace",	sys_settrace, METH_O, settrace_doc},
 	{NULL,		NULL}		/* sentinel */
 };