OSDN Git Service

Add git_close_diff function when call it when program exist.
authorFrank Li <lznuaa@gmail.com>
Mon, 11 Jan 2010 04:58:03 +0000 (12:58 +0800)
committerFrank Li <lznuaa@gmail.com>
Mon, 11 Jan 2010 04:58:03 +0000 (12:58 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
ext/gitdll/gitdll.c
src/Git/Git.cpp

index 72ca9db..77441a7 100644 (file)
@@ -375,6 +375,19 @@ int git_open_diff(GIT_DIFF *diff, char * arg)
 \r
        return 0;\r
 }\r
+int git_close_diff(GIT_DIFF handle)\r
+{\r
+       git_diff_flush(handle);\r
+       if(handle)\r
+       {\r
+               struct rev_info *p_Rev;\r
+               p_Rev=(struct rev_info *)handle;\r
+               if(p_Rev->pPrivate)\r
+                       free(p_Rev->pPrivate);\r
+               free(handle);\r
+       }\r
+       return 0;\r
+}\r
 int git_diff_flush(GIT_DIFF diff)\r
 {\r
        struct diff_queue_struct *q = &diff_queued_diff;\r
index 737c60a..a87114c 100644 (file)
@@ -6,6 +6,7 @@
 #include "GitConfig.h"\r
 #include <map>\r
 #include "UnicodeUtils.h"\r
+#include "gitdll.h"\r
 \r
 int CGit::m_LogEncode=CP_UTF8;\r
 \r
@@ -133,6 +134,11 @@ CGit::CGit(void)
 \r
 CGit::~CGit(void)\r
 {\r
+       if(this->m_GitDiff)\r
+       {\r
+               git_close_diff(m_GitDiff);\r
+               m_GitDiff=0;\r
+       }\r
 }\r
 \r
 static char g_Buffer[4096];\r