user-accounts: Fix password dialog crashes
Currently, the password_entry_timeout() callback can be called even after the dialog disposal, which leads to segfaults. This is because the corresponding source ids can be cleared in some cases without removing the sources. Let's prevent direct calls of password_entry_timeout() without destroying the source ids in order to fix this issue. Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/issues/760
This commit is contained in:
parent
5bf43b92ac
commit
29367abbb0
2 changed files with 8 additions and 4 deletions
|
@ -336,6 +336,11 @@ password_entry_key_press_cb (CcPasswordDialog *self,
|
|||
{
|
||||
GdkEventKey *key = (GdkEventKey *)event;
|
||||
|
||||
if (self->password_entry_timeout_id != 0) {
|
||||
g_source_remove (self->password_entry_timeout_id);
|
||||
self->password_entry_timeout_id = 0;
|
||||
}
|
||||
|
||||
if (key->keyval == GDK_KEY_Tab)
|
||||
password_entry_timeout (self);
|
||||
|
||||
|
@ -476,7 +481,6 @@ cc_password_dialog_class_init (CcPasswordDialogClass *klass)
|
|||
gtk_widget_class_bind_template_callback (widget_class, password_entry_focus_out_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, password_entry_icon_press_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, password_entry_key_press_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, password_entry_timeout);
|
||||
gtk_widget_class_bind_template_callback (widget_class, verify_entry_changed);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
<property name="activates_default">True</property>
|
||||
<property name="input_purpose">password</property>
|
||||
<signal name="notify::text" handler="verify_entry_changed" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="password_entry_timeout" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="password_entry_focus_out_cb" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="focus-out-event" handler="password_entry_focus_out_cb" after="yes" object="CcPasswordDialog" swapped="yes"/>
|
||||
</object>
|
||||
<packing>
|
||||
|
@ -181,7 +181,7 @@
|
|||
<property name="activates_default">True</property>
|
||||
<property name="input_purpose">password</property>
|
||||
<signal name="notify::text" handler="password_entry_changed" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="password_entry_timeout" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="password_entry_focus_out_cb" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="focus-out-event" handler="password_entry_focus_out_cb" after="yes" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="key-press-event" handler="password_entry_key_press_cb" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="icon-press" handler="password_entry_icon_press_cb" object="CcPasswordDialog" swapped="yes"/>
|
||||
|
@ -237,7 +237,7 @@
|
|||
<property name="margin_bottom">12</property>
|
||||
<property name="input_purpose">password</property>
|
||||
<signal name="notify::text" handler="old_password_entry_changed" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="password_entry_timeout" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="activate" handler="old_password_entry_focus_out_cb" object="CcPasswordDialog" swapped="yes"/>
|
||||
<signal name="focus-out-event" handler="old_password_entry_focus_out_cb" after="yes" object="CcPasswordDialog" swapped="yes"/>
|
||||
</object>
|
||||
<packing>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue