From 4c2a5360e8634c27f820780aef365421cefec7ed Mon Sep 17 00:00:00 2001
From: Alexander Gluzsky <sss123next@list.ru>
Date: Thu, 9 Aug 2012 05:27:38 +0000
Subject: used dynamic buffer for gpg data (fixes problem with large gpg
 output)

git-svn-id: http://svn.miranda-ng.org/main/trunk@1411 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 plugins/New_GPG/src/gpg_wrapper.cpp | 4 ++--
 plugins/New_GPG/src/utilities.cpp   | 8 +++++---
 2 files changed, 7 insertions(+), 5 deletions(-)

(limited to 'plugins/New_GPG')

diff --git a/plugins/New_GPG/src/gpg_wrapper.cpp b/plugins/New_GPG/src/gpg_wrapper.cpp
index 38f86889a4..e420faac92 100755
--- a/plugins/New_GPG/src/gpg_wrapper.cpp
+++ b/plugins/New_GPG/src/gpg_wrapper.cpp
@@ -120,7 +120,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD
 
 	inputpos=ainput;
 
-	while (TRUE)
+	while (true)
 	{
 		if(!pri.hProcess)
 			break;
@@ -135,7 +135,7 @@ pxResult pxExecute(wstring *acommandline, char *ainput, string *aoutput, LPDWORD
 
 		success=WriteFile(writestdin,inputpos,size,&transfered,NULL);
 		inputpos+=transfered;
-		boost::this_thread::sleep(boost::posix_time::milliseconds(200));
+		boost::this_thread::sleep(boost::posix_time::milliseconds(50));
 	}
 
 	storeOutput(readstdout,aoutput);
diff --git a/plugins/New_GPG/src/utilities.cpp b/plugins/New_GPG/src/utilities.cpp
index 6b84c07954..1e9d8997b8 100755
--- a/plugins/New_GPG/src/utilities.cpp
+++ b/plugins/New_GPG/src/utilities.cpp
@@ -563,16 +563,18 @@ int onSendFile(WPARAM w, LPARAM l)
 void storeOutput(HANDLE ahandle, string *output)
 {
 	BOOL success;
-	char readbuffer[4096] = {0};
+	char *readbuffer = NULL;
 	unsigned long transfered, available;
 	
 	do {
 		PeekNamedPipe(ahandle,NULL,0,NULL,&available,NULL);
 		if (!available)
 			continue;
-		success=ReadFile(ahandle,readbuffer,sizeof(readbuffer),&transfered,NULL);
+		readbuffer = (char*)mir_alloc(available);
+		success=ReadFile(ahandle,readbuffer,available,&transfered,NULL);
 		if (success && transfered)
-			output->append(readbuffer, 4096);
+			output->append(readbuffer, available);
+		mir_free(readbuffer);
 	} while (available>0);
 }
 
-- 
cgit v1.2.3