summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-08-09 08:33:05 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-08-09 08:33:05 +0300
commit5fa836175d96451c4e3d60761b017371a2f7495c (patch)
tree2f94ab36b37208a367a088dfd626e1134d10f256
parent221a1808e2b64e8625dfa4ce7c7ebc2490b0b5c1 (diff)
used dynamic buffer for gpg data (fixes problem with large gpg output)
-rwxr-xr-xsrc/gpg_wrapper.cpp4
-rwxr-xr-xsrc/utilities.cpp8
2 files changed, 7 insertions, 5 deletions
diff --git a/src/gpg_wrapper.cpp b/src/gpg_wrapper.cpp
index 38f8688..e420faa 100755
--- a/src/gpg_wrapper.cpp
+++ b/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/src/utilities.cpp b/src/utilities.cpp
index 242ccc4..e071aaf 100755
--- a/src/utilities.cpp
+++ b/src/utilities.cpp
@@ -612,16 +612,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);
}