pw->heading_label = s;
}
- pw->user_string = (p->pw_name ? p->pw_name : "???");
+ pw->user_string = (p && p->pw_name ? p->pw_name : "???");
pw->passwd_string = strdup("");
f = get_string_resource ("passwd.headingFont", "Dialog.Font");
}
+static XComposeStatus *compose_status;
+
static void
handle_passwd_key (saver_info *si, XKeyEvent *event)
{
char s[2];
char *stars = 0;
int i;
- int size = XLookupString (event, s, 1, 0, 0);
+ int size = XLookupString (event, s, 1, 0, compose_status);
if (size != 1) return;
make_passwd_window (si);
if (cmap) XInstallColormap (si->dpy, cmap);
+ compose_status = calloc (1, sizeof (*compose_status));
+
handle_typeahead (si);
passwd_event_loop (si);
status = (si->pw_data->state == pw_ok);
destroy_passwd_window (si);
+ free (compose_status);
+ compose_status = 0;
+
cmap = si->default_screen->cmap;
if (cmap) XInstallColormap (si->dpy, cmap);