diff -Naur xarchiver-0.5.3.orig/src/window.c xarchiver-0.5.2/src/window.c --- xarchiver-0.5.3.orig/src/window.c 2014-01-24 08:10:09.305990000 +0100 +++ xarchiver-0.5.3/src/window.c 2014-01-24 08:42:45.110729290 +0100 @@ -1694,7 +1694,7 @@ { if (archive->passwd == NULL) { - archive->passwd = xa_create_password_dialog(NULL); + archive->passwd = xa_create_password_dialog(archive); if ( archive->passwd == NULL) { gtk_drag_finish (dc,FALSE,FALSE,t); @@ -2702,9 +2702,12 @@ if (entry->is_encrypted) { - archive[idx]->passwd = xa_create_password_dialog(archive[idx]); if (archive[idx]->passwd == NULL) - return; + { + archive[idx]->passwd = xa_create_password_dialog(archive[idx]); + if (archive[idx]->passwd == NULL) + return; + } } filename = g_strconcat(archive[idx]->tmp,"/",entry->filename,NULL); if (g_file_test(filename,G_FILE_TEST_EXISTS)) @@ -2768,8 +2771,12 @@ { if (entry->is_encrypted) { - if (archive->passwd == NULL) - return; + if (archive->passwd == NULL) + { + archive->passwd = xa_create_password_dialog(archive); + if (archive->passwd == NULL) + return; + } } if (archive->extraction_path) {