Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv29314/src

Modified Files:
        Track.cpp TrackPanel.cpp 
Log Message:
Fix case where the starting track is not part of a group

Index: Track.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Track.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- Track.cpp   4 Apr 2009 05:45:05 -0000       1.59
+++ Track.cpp   7 Apr 2009 07:01:35 -0000       1.60
@@ -413,20 +413,24 @@
 {
    Track *t = NULL;
 
-   while (member->GetKind() == Track::Wave) {
+   // Scan forward for a label track
+   while (member && member->GetKind() == Track::Wave) {
       member = l->GetNext(member);
    }
 
-   if (member->GetKind() != Track::Label) {
+   // It's not part of a group if one wasn't found
+   if (!member || member->GetKind() != Track::Label) {
       return NULL;
    }
 
+   // Find first wave track in the group
    member = l->GetPrev(member);
    while (member && member->GetKind() == Track::Wave) {
       t = member;
       member = l->GetPrev(member);
    }
 
+   // Make it current
    cur = (TrackListNode *) t->GetNode();
 
    return t;
@@ -436,10 +440,12 @@
 {
    Track *t = TrackListIterator::Next(skiplinked);
 
+   // End of the group has been reached
    if (!t || mEndOfGroup) {
       return NULL;
    }
 
+   // Found the end of the group, so signal for next iteration
    if (t->GetKind() == Track::Label) {
       mEndOfGroup = true;
    }

Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.443
retrieving revision 1.444
diff -u -d -r1.443 -r1.444
--- TrackPanel.cpp      6 Apr 2009 21:58:12 -0000       1.443
+++ TrackPanel.cpp      7 Apr 2009 07:01:35 -0000       1.444
@@ -2217,11 +2217,10 @@
 
          mCapturedClipIsSelection = true;
 
+         TrackGroupIterator iter(mTracks);
          Track *t;
-         if (GetProject()->IsSticky()) {
-            TrackGroupIterator iter(mTracks);
-
-            for (t = iter.First(wt); t; t = iter.Next()) {
+         if (GetProject()->IsSticky() && (t = iter.First(wt))) {
+            while (t) {
                if (t->GetKind() == Track::Wave) {
                   WaveTrack *wt = (WaveTrack *)t;
                   WaveClipList::Node* it;
@@ -2239,6 +2238,7 @@
                else {
                   mCapturedClipArray.Add(TrackClip(t, NULL));
                }
+               t = iter.Next();
             }
          }
          else {
@@ -2269,11 +2269,10 @@
          }
       }
       else {
+         TrackGroupIterator iter(mTracks);
          Track *t;
-         if (GetProject()->IsSticky()) {
-            TrackGroupIterator iter(mTracks);
-
-            for (t = iter.First(wt); t; t = iter.Next()) {
+         if (GetProject()->IsSticky() && (t = iter.First(wt))) {
+            while (t) {
                if (t->GetKind() == Track::Wave) {
                   WaveTrack *wt = (WaveTrack *)t;
                   WaveClipList::Node* it;
@@ -2285,6 +2284,7 @@
                else {
                   mCapturedClipArray.Add(TrackClip(t, NULL));
                }
+               t = iter.Next();
             }
          }
          else {


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to