Check vector bound
authorSup Yut Sum <ch3cooli@gmail.com>
Wed, 17 Apr 2013 15:13:57 +0000 (17 23:13 +0800)
committerSup Yut Sum <ch3cooli@gmail.com>
Wed, 17 Apr 2013 15:14:36 +0000 (17 23:14 +0800)
Signed-off-by: Sup Yut Sum <ch3cooli@gmail.com>
src/TortoiseGitBlame/TortoiseGitBlameView.cpp

index 0444ed8..dae6fb0 100644 (file)
@@ -331,7 +331,7 @@ void CTortoiseGitBlameView::OnRButtonUp(UINT /*nFlags*/, CPoint point)
        line = line + (point.y/height);\r
        if (line < (LONG)m_CommitHash.size())\r
        {\r
-               if(m_ID[line] >= 0) // only show context menu if we have log data for it\r
+               if(line < (LONG)m_ID.size() && m_ID[line] >= 0) // only show context menu if we have log data for it\r
                {\r
                        m_MouseLine = (LONG)line;\r
                        ClientToScreen(&point);\r
@@ -342,7 +342,7 @@ void CTortoiseGitBlameView::OnRButtonUp(UINT /*nFlags*/, CPoint point)
 \r
 void CTortoiseGitBlameView::OnUpdateBlamePopupBlamePrevious(CCmdUI *pCmdUI)\r
 {\r
-       if (m_ID[m_MouseLine] <= 1)\r
+       if (m_MouseLine < 0 || m_MouseLine >= (LONG)m_ID.size() || m_ID[m_MouseLine] <= 1)\r
        {\r
                pCmdUI->Enable(false);\r
        }\r
@@ -354,7 +354,7 @@ void CTortoiseGitBlameView::OnUpdateBlamePopupBlamePrevious(CCmdUI *pCmdUI)
 \r
 void CTortoiseGitBlameView::OnUpdateBlamePopupDiffPrevious(CCmdUI *pCmdUI)\r
 {\r
-       if (m_ID[m_MouseLine] <= 1)\r
+       if (m_MouseLine < 0 || m_MouseLine >= (LONG)m_ID.size() || m_ID[m_MouseLine] <= 1)\r
        {\r
                pCmdUI->Enable(false);\r
        }\r
@@ -631,6 +631,9 @@ void CTortoiseGitBlameView::CopySelectedLogToClipboard()
 \r
 void CTortoiseGitBlameView::BlamePreviousRevision()\r
 {\r
+       if (m_MouseLine < 0 || m_MouseLine >= (LONG)m_ID.size())\r
+               return;\r
+\r
        CString procCmd = _T("/path:\"");\r
        procCmd += ((CMainFrame*)::AfxGetApp()->GetMainWnd())->GetActiveView()->GetDocument()->GetPathName();\r
        procCmd += _T("\" ");\r
@@ -642,6 +645,9 @@ void CTortoiseGitBlameView::BlamePreviousRevision()
 \r
 void CTortoiseGitBlameView::DiffPreviousRevision()\r
 {\r
+       if (m_MouseLine < 0 || m_MouseLine >= (LONG)m_ID.size())\r
+               return;\r
+\r
        CString procCmd = _T("/path:\"");\r
        procCmd += ((CMainFrame*)::AfxGetApp()->GetMainWnd())->GetActiveView()->GetDocument()->GetPathName();\r
        procCmd += _T("\" ");\r
@@ -654,6 +660,9 @@ void CTortoiseGitBlameView::DiffPreviousRevision()
 \r
 void CTortoiseGitBlameView::ShowLog()\r
 {\r
+       if (m_MouseLine < 0 || m_MouseLine >= (LONG)m_ID.size())\r
+               return;\r
+\r
        CString procCmd = _T("/path:\"");\r
        procCmd += ((CMainFrame*)::AfxGetApp()->GetMainWnd())->GetActiveView()->GetDocument()->GetPathName();\r
        procCmd += _T("\" ");\r
@@ -1603,7 +1612,7 @@ void CTortoiseGitBlameView::UpdateInfo(int Encode)
 \r
 COLORREF CTortoiseGitBlameView::GetLineColor(int line)\r
 {\r
-       if (m_colorage)\r
+       if (m_colorage && line >= 0 && line < m_ID.size())\r
                return InterColor(DWORD(m_regOldLinesColor), DWORD(m_regNewLinesColor), (m_ID[line] - m_lowestrev) * 100 / ((m_highestrev - m_lowestrev) + 1));\r
        else\r
                return m_windowcolor;\r