summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorAlexander Gluzsky <sss123next@list.ru>2012-08-09 05:27:38 +0000
committerAlexander Gluzsky <sss123next@list.ru>2012-08-09 05:27:38 +0000
commit4c2a5360e8634c27f820780aef365421cefec7ed (patch)
tree7b3a608911b763e4ea6f994a4a2e03e8c832d841 /plugins
parent71f9ef9ded15566ee811508a6c9b8eee21facfa8 (diff)
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
Diffstat (limited to 'plugins')
-rwxr-xr-xplugins/New_GPG/src/gpg_wrapper.cpp4
-rwxr-xr-xplugins/New_GPG/src/utilities.cpp8
2 files changed, 7 insertions, 5 deletions
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);
}