From 2aa47f2b32ada4f78b98765441489bd59445c181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Kr=C3=A1l?= Date: Sun, 21 Nov 2010 17:35:48 +0000 Subject: [PATCH] [1.2.X] Preventing problems possibly introduced by r14662 acquire a lock before entering a try block that ends with the lock's release. Thanks for the catch Alex. Backport of r14668 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14669 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/dispatch/dispatcher.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py index bea9131398..c0301cd7b8 100644 --- a/django/dispatch/dispatcher.py +++ b/django/dispatch/dispatcher.py @@ -99,8 +99,8 @@ class Signal(object): if weak: receiver = saferef.safeRef(receiver, onDelete=self._remove_receiver) + self.lock.acquire() try: - self.lock.acquire() for r_key, _ in self.receivers: if r_key == lookup_key: break @@ -136,8 +136,8 @@ class Signal(object): else: lookup_key = (_make_id(receiver), _make_id(sender)) + self.lock.acquire() try: - self.lock.acquire() for index in xrange(len(self.receivers)): (r_key, _) = self.receivers[index] if r_key == lookup_key: @@ -237,8 +237,8 @@ class Signal(object): Remove dead receivers from connections. """ + self.lock.acquire() try: - self.lock.acquire() to_remove = [] for key, connected_receiver in self.receivers: if connected_receiver == receiver: