OSDN Git Service

CGit: Workaround: Flush git output when command should be aborted. Still waits for...
authorJohan t Hart <johanthart@gmail.com>
Tue, 3 Feb 2009 23:35:20 +0000 (00:35 +0100)
committerFrank Li <lznuaa@gmail.com>
Sun, 8 Feb 2009 07:04:58 +0000 (15:04 +0800)
src/Git/Git.cpp

index 4daf111..eecb872 100644 (file)
@@ -290,12 +290,16 @@ int CGit::Run(CGitCall* pcall)
 \r
        DWORD readnumber;\r
        BYTE data[CALL_OUTPUT_READ_CHUNK_SIZE];\r
+       bool bAborted=false;\r
        while(ReadFile(hRead,data,CALL_OUTPUT_READ_CHUNK_SIZE,&readnumber,NULL))\r
        {\r
                //Todo: when OnOutputData() returns 'true', abort git-command. Send CTRL-C signal?\r
-               pcall->OnOutputData(data,readnumber);\r
+               if(!bAborted)//For now, flush output when command aborted.\r
+                       if(pcall->OnOutputData(data,readnumber))\r
+                               bAborted=true;\r
        }\r
-       pcall->OnEnd();\r
+       if(!bAborted)\r
+               pcall->OnEnd();\r
 \r
        \r
        CloseHandle(pi.hThread);\r