Browse Source
plugins: fix hook/attr name collision in close()
Revealer plugin has method "password_dialog"
"password_dialog" is also a hook name, but revealer.password_dialog is not a hook
3.3.3.1
SomberNight
6 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
1 changed files with
10 additions and
5 deletions
-
electrum/plugin.py
|
|
@ -251,11 +251,16 @@ class BasePlugin(PrintError): |
|
|
|
|
|
|
|
def close(self): |
|
|
|
# remove self from hooks |
|
|
|
for k in dir(self): |
|
|
|
if k in hook_names: |
|
|
|
l = hooks.get(k, []) |
|
|
|
l.remove((self, getattr(self, k))) |
|
|
|
hooks[k] = l |
|
|
|
for attr_name in dir(self): |
|
|
|
if attr_name in hook_names: |
|
|
|
# found attribute in self that is also the name of a hook |
|
|
|
l = hooks.get(attr_name, []) |
|
|
|
try: |
|
|
|
l.remove((self, getattr(self, attr_name))) |
|
|
|
except ValueError: |
|
|
|
# maybe attr name just collided with hook name and was not hook |
|
|
|
continue |
|
|
|
hooks[attr_name] = l |
|
|
|
self.parent.close_plugin(self) |
|
|
|
self.on_close() |
|
|
|
|
|
|
|