fix crash when exporting private keys
This commit is contained in:
@@ -2269,14 +2269,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
private_keys = {}
|
private_keys = {}
|
||||||
addresses = self.wallet.get_addresses()
|
addresses = self.wallet.get_addresses()
|
||||||
done = False
|
done = False
|
||||||
|
cancelled = False
|
||||||
def privkeys_thread():
|
def privkeys_thread():
|
||||||
for addr in addresses:
|
for addr in addresses:
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
if done:
|
if done or cancelled:
|
||||||
break
|
break
|
||||||
privkey = self.wallet.export_private_key(addr, password)[0]
|
privkey = self.wallet.export_private_key(addr, password)[0]
|
||||||
private_keys[addr] = privkey
|
private_keys[addr] = privkey
|
||||||
self.computing_privkeys_signal.emit()
|
self.computing_privkeys_signal.emit()
|
||||||
|
if not cancelled:
|
||||||
self.computing_privkeys_signal.disconnect()
|
self.computing_privkeys_signal.disconnect()
|
||||||
self.show_privkeys_signal.emit()
|
self.show_privkeys_signal.emit()
|
||||||
|
|
||||||
@@ -2285,9 +2287,20 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
e.setText(s)
|
e.setText(s)
|
||||||
b.setEnabled(True)
|
b.setEnabled(True)
|
||||||
self.show_privkeys_signal.disconnect()
|
self.show_privkeys_signal.disconnect()
|
||||||
|
nonlocal done
|
||||||
|
done = True
|
||||||
|
|
||||||
|
def on_dialog_closed(*args):
|
||||||
|
nonlocal done
|
||||||
|
nonlocal cancelled
|
||||||
|
if not done:
|
||||||
|
cancelled = True
|
||||||
|
self.computing_privkeys_signal.disconnect()
|
||||||
|
self.show_privkeys_signal.disconnect()
|
||||||
|
|
||||||
self.computing_privkeys_signal.connect(lambda: e.setText("Please wait... %d/%d"%(len(private_keys),len(addresses))))
|
self.computing_privkeys_signal.connect(lambda: e.setText("Please wait... %d/%d"%(len(private_keys),len(addresses))))
|
||||||
self.show_privkeys_signal.connect(show_privkeys)
|
self.show_privkeys_signal.connect(show_privkeys)
|
||||||
|
d.finished.connect(on_dialog_closed)
|
||||||
threading.Thread(target=privkeys_thread).start()
|
threading.Thread(target=privkeys_thread).start()
|
||||||
|
|
||||||
if not d.exec_():
|
if not d.exec_():
|
||||||
|
|||||||
Reference in New Issue
Block a user