diff -Naur src/window.c.orig xarchiver-0.5.2/src/window.c
--- src/window.c.orig	2014-01-24 08:10:09.305990000 +0100
+++ 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)
		{
