summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-08-09 08:34:41 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2012-08-09 08:34:41 +0300
commit5bc42bd9a3725e30d9ad5bf4d7cb90779237c9c1 (patch)
tree7f9ca1abd7e6a295a1f7dc846f92e096cbefd1bd /utilities.cpp
parent64c6452c697a05ab0b0d4bbbda167ddc35215397 (diff)
used dynamic buffer for gpg data (fixes problem with large gpg output)
Diffstat (limited to 'utilities.cpp')
-rwxr-xr-xutilities.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/utilities.cpp b/utilities.cpp
index 2207213..56d3033 100755
--- a/utilities.cpp
+++ b/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);
}