OSDN Git Service

BUG: [ 2536207 ] MergeDocDiffSync.cpp
authorKimmo Varis <kimmov@gmail.com>
Mon, 26 Jan 2009 17:58:15 +0000 (17:58 +0000)
committerKimmo Varis <kimmov@gmail.com>
Mon, 26 Jan 2009 17:58:15 +0000 (17:58 +0000)
 Fix the crash by using resize() instead of reserve() to initialize std::vector.

Src/DiffList.cpp
Src/DiffList.h

index b80bb59..24a4037 100644 (file)
@@ -44,6 +44,24 @@ void DIFFRANGE::swap_sides()
 }
 
 /**
+ * @brief Initialize DiffMap.
+ * @param [in] nlines Lines to add to the list.
+ */
+void DiffMap::InitDiffMap(int nlines)
+{
+       m_map.resize(nlines);
+
+       // sentry value so we can check later that we set them all
+       std::vector<int>::iterator iter = m_map.begin();
+       while (iter != m_map.end())
+       {
+               *iter = BAD_MAP_ENTRY;
+               iter++;
+       }
+}
+
+
+/**
  * @brief Default constructor, initialises difflist to 64 items.
  */
 DiffList::DiffList()
index d98fd42..9453133 100644 (file)
@@ -75,22 +75,7 @@ public:
        // boilerplate ctr, copy ctr
        DiffMap() { }
        DiffMap(const DiffMap & src) { m_map = src.m_map; }
-
-       /**
-        * @brief Put DiffMap into known. starting, unfilled state
-        */
-       void InitDiffMap(int nlines)
-       {
-               m_map.reserve(nlines);
-
-               // sentry value so we can check later that we set them all
-               std::vector<int>::iterator iter = m_map.begin();
-               while (iter != m_map.end())
-               {
-                       *iter = BAD_MAP_ENTRY;
-                       iter++;
-               }
-       }
+       void InitDiffMap(int nlines);
 };
 
 /**