OSDN Git Service

Version Tree Work.
authorFrank Li <lznuaa@gmail.com>
Mon, 5 Jan 2009 14:47:09 +0000 (22:47 +0800)
committerFrank Li <lznuaa@gmail.com>
Mon, 5 Jan 2009 14:47:09 +0000 (22:47 +0800)
Fix crash problem because use vector::end wrong.

Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/Git.cpp
src/Git/GitRev.cpp
src/TortoiseProc/LogDataVector.cpp
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/lanes.cpp

index ca57940..131fc91 100644 (file)
@@ -204,7 +204,7 @@ int CGit::GetLog(CString& logOut, CString &hash, int count)
        if(count>0)\r
                num.Format(_T("-n%d"),count);\r
 \r
-       cmd.Format(_T("git.exe log %s --left-right --boundary -C --numstat --raw --pretty=format:\""),\r
+       cmd.Format(_T("git.exe log %s -C --numstat --raw --pretty=format:\""),\r
                                num);\r
        BuildOutputFormat(log);\r
        cmd += log;\r
index 0394e26..9ec85e3 100644 (file)
@@ -103,7 +103,10 @@ int GitRev::ParserFromLog(CString &log)
                                break;\r
                        case LOG_REV_COMMIT_HASH:\r
                                this->m_CommitHash = text.Right(40);\r
-                               this->m_Mark=text[0];\r
+                               if(text.GetLength()>40)\r
+                               {\r
+                                       this->m_Mark=text[0];\r
+                               }\r
                                break;\r
                        case LOG_REV_COMMIT_PARENT:\r
                                while(text.GetLength()>0)\r
@@ -155,11 +158,16 @@ int GitRev::SafeFetchFullInfo(CGit *git)
        {\r
                //GitRev rev;\r
                CString onelog;\r
+               TCHAR oldmark=this->m_Mark;\r
+       \r
                git->GetLog(onelog,m_CommitHash,1);\r
                CString oldhash=m_CommitHash;\r
                ParserFromLog(onelog);\r
                \r
                //ASSERT(oldhash==m_CommitHash);\r
+               if(oldmark!=0)\r
+                       this->m_Mark=oldmark;  //parser full log will cause old mark overwrited. \r
+                                                              //So we need keep old bound mark.\r
 \r
                InterlockedExchange(&m_IsUpdateing,FALSE);\r
                InterlockedExchange(&m_IsFull,TRUE);\r
index 626fad4..dbff8df 100644 (file)
@@ -204,6 +204,7 @@ void CLogDataVector::updateLanes(GitRev& c, Lanes& lns, CString &sha)
                lns.changeActiveLane(sha); // uses previous isBoundary state
 
        lns.setBoundary(c.IsBoundary()); // update must be here
+       TRACE(_T("%s %d"),c.m_CommitHash,c.IsBoundary());
 
        if (isFork)
                lns.setFork(sha);
index 2cf2f61..f098c66 100644 (file)
@@ -561,6 +561,7 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
        \r
        // redraw the views\r
 //     InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
+#if 0\r
        if (m_currentChangedArray)\r
        {\r
                m_ChangedFileListCtrl.SetItemCountEx(m_currentChangedArray->GetCount());\r
@@ -576,6 +577,7 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
                m_ChangedFileListCtrl.SetItemCountEx(0);\r
                m_ChangedFileListCtrl.Invalidate();\r
        }\r
+#endif\r
        CAppUtils::ResizeAllListCtrlCols(&m_ChangedFileListCtrl);\r
        // sort according to the settings\r
        if (m_nSortColumnPathList > 0)\r
index 07f3cc7..585590d 100644 (file)
@@ -234,7 +234,7 @@ void Lanes::afterFork() {
                if (!boundary && IS_NODE(t))
                        t = ACTIVE; // boundary will be reset by changeActiveLane()
        }
-       while (*typeVec.end() == EMPTY) {
+       while (typeVec.back() == EMPTY) {
                typeVec.pop_back();
                nextShaVec.pop_back();
        }