From 7f9e90bef3ca8311640446f567985739b4e75660 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Wed, 30 Mar 2005 16:32:10 +0000 Subject: Fix for rather inaccurately titled bug [ 1165306 ] Property access with decorator makes interpreter crash Don't allow the creation of unbound methods with NULL im_class, because attempting to call such crashes. Backport candidate. --- Lib/test/test_new.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Lib/test/test_new.py') diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py index f022f7e843..4aab1e268b 100644 --- a/Lib/test/test_new.py +++ b/Lib/test/test_new.py @@ -47,6 +47,16 @@ im() verify(c.get_yolks() == 1 and c.get_more_yolks() == 4, 'Broken call of hand-crafted instance method') +im = new.instancemethod(break_yolks, c) +im() +verify(c.get_yolks() == -1) +try: + new.instancemethod(break_yolks, None) +except TypeError: + pass +else: + raise TestFailed, "dangerous instance method creation allowed" + # It's unclear what the semantics should be for a code object compiled at # module scope, but bound and run in a function. In CPython, `c' is global # (by accident?) while in Jython, `c' is local. The intent of the test -- cgit v1.2.1