motioncells: Fix cell string generation
authorJan Schmidt <jan@centricular.com>
Thu, 13 Apr 2017 15:56:50 +0000 (01:56 +1000)
committerJan Schmidt <jan@centricular.com>
Thu, 13 Apr 2017 15:58:11 +0000 (01:58 +1000)
Allow 1 extra char in the tmp buffer where the motion cell
snippets are generated, so that it doesn't leave off a comma
when dealing with cells that have 2 numerals in both indices

ext/opencv/MotionCells.cpp

index 94c4ae5..f85989e 100644 (file)
@@ -199,11 +199,10 @@ MotionCells::performDetectionMotionCells (IplImage * p_frame,
       cvSetZero (transparencyimg);
       if (m_motioncellsidxcstr)
         delete[]m_motioncellsidxcstr;
-      m_motioncells_idx_count = m_MotionCells.size () * MSGLEN; //one motion cell idx: (lin idx : col idx,) it's 4 character except last motion cell idx
+      m_motioncells_idx_count = m_MotionCells.size () * MSGLEN; //one motion cell idx: (lin idx : col idx,) it's up to 6 character except last motion cell idx
       m_motioncellsidxcstr = new char[m_motioncells_idx_count];
-      char *tmpstr = new char[MSGLEN];
-      for (int i = 0; i < MSGLEN; i++)
-        tmpstr[i] = ' ';
+      char *tmpstr = new char[MSGLEN+ 1];
+      tmpstr[0] = 0;
       for (unsigned int i = 0; i < m_MotionCells.size (); i++) {
         CvPoint pt1, pt2;
         pt1.x = m_MotionCells.at (i).cell_pt1.x * 2;
@@ -227,10 +226,10 @@ MotionCells::performDetectionMotionCells (IplImage * p_frame,
         }
 
         if (i < m_MotionCells.size () - 1) {
-          snprintf (tmpstr, MSGLEN, "%d:%d,", m_MotionCells.at (i).lineidx,
+          snprintf (tmpstr, MSGLEN+1, "%d:%d,", m_MotionCells.at (i).lineidx,
               m_MotionCells.at (i).colidx);
         } else {
-          snprintf (tmpstr, MSGLEN, "%d:%d", m_MotionCells.at (i).lineidx,
+          snprintf (tmpstr, MSGLEN+1, "%d:%d", m_MotionCells.at (i).lineidx,
               m_MotionCells.at (i).colidx);
         }
         if (i == 0)