]> git.donarmstrong.com Git - lilypond.git/commitdiff
(spanner::calc_neutral_stem_direction):
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 31 Jan 2006 11:24:00 +0000 (11:24 +0000)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 31 Jan 2006 11:24:00 +0000 (11:24 +0000)
Fix -1, >=0 boundary checks for unsigned vsize.

ChangeLog
lily/melody-spanner.cc

index 16325f576394006be57f69fa70f221d0a93ad46c..3a02ed749f892970fa880b87900abd364c9b9f30 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-01-31  Jan Nieuwenhuizen  <janneke@gnu.org>
 
+       * lily/melody-spanner.cc (spanner::calc_neutral_stem_direction):
+       Fix -1, >=0 boundary checks for unsigned vsize.
+
        * lily/separating-group-spanner.cc (spanner::find_rods): Fix >=0
        loop for unsigned vsize.
 
index 75a0720fc2e669951e44402952bd9fabd1c45ff9..053c7c34ccdeef44e2dd385a38a739112034949c 100644 (file)
@@ -33,20 +33,19 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
 
   std::vector<Direction> dirs;
   for (vsize i = 0; i < stems.size (); i++)
-    {
-      dirs.push_back (to_dir (stems[i]->get_property ("default-direction")));
-    }
+    dirs.push_back (to_dir (stems[i]->get_property ("default-direction")));
 
-  int last_nonneutral = -1;
-  int next_nonneutral = 0;
-  while (next_nonneutral < dirs.size() &&  !dirs[next_nonneutral])
-    next_nonneutral ++;
+  vsize last_nonneutral = VPOS;
+  vsize next_nonneutral = 0;
+  while (next_nonneutral != VPOS && next_nonneutral < dirs.size ()
+        &&  !dirs[next_nonneutral])
+    next_nonneutral++;
 
-  while (last_nonneutral < dirs.size () - 1) 
+  while (last_nonneutral == VPOS || last_nonneutral < dirs.size () - 1) 
     {
       Direction d1 = CENTER;
       Direction d2 = CENTER;
-      if (last_nonneutral >= 0)
+      if (last_nonneutral != VPOS)
        d1 = dirs[last_nonneutral];
       if (next_nonneutral < dirs.size ())
        d2 = dirs[next_nonneutral];
@@ -61,20 +60,20 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
       else
        total = to_dir (me->get_property ("neutral-direction"));
       
-      for (int i = last_nonneutral + 1; i <  next_nonneutral; i++)
+      for (vsize i = last_nonneutral + 1; i <  next_nonneutral; i++)
        stems[i]->set_property ("neutral-direction", scm_from_int (total));
 
 
       last_nonneutral = next_nonneutral;
       while (last_nonneutral < dirs.size ()
             && dirs[last_nonneutral])
-       last_nonneutral ++;
+       last_nonneutral++;
       next_nonneutral = last_nonneutral;
-      last_nonneutral --;
+      last_nonneutral--;
 
       while (next_nonneutral < dirs.size ()
             && !dirs[next_nonneutral])
-       next_nonneutral ++;
+       next_nonneutral++;
     }
 
   me->suicide ();