1.3.87.jcn1
===========
* Made bugfix in Simple-music-iterator copy constructor.
* Fixed get_music for sequential-music-iterator and request-chord-iterator.
1.3.87
======
+1.3.87.jcn1
+===========
+
+* Made bugfix in Simple-music-iterator copy constructor.
+
+* Fixed get_music for sequential-music-iterator and request-chord-iterator.
+
+
+1.3.87
+======
+
1.3.86.jcn2
================
1.3.86.jcn2
================
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=87
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=87
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
return (Request_chord*) music_l_;
}
return (Request_chord*) music_l_;
}
-Request_chord_iterator::get_music (Moment)const
+Request_chord_iterator::get_music (Moment m) const
+ Request_chord_iterator* urg = (Request_chord_iterator*)this;
+ urg->last_processed_mom_ = m;
+ urg->last_processed_mom_.set_infinite (1);
SCM s = SCM_EOL;
if (music_l_)
{
SCM s = SCM_EOL;
if (music_l_)
{
{
s = gh_cons (gh_car (m) , s);
}
{
s = gh_cons (gh_car (m) , s);
}
SCM
Sequential_music_iterator::get_music (Moment until)const
{
SCM
Sequential_music_iterator::get_music (Moment until)const
{
/*
FIXME: get_music () is const, so we must operate on a copy of child-iter.
/*
FIXME: get_music () is const, so we must operate on a copy of child-iter.
+
+ hmm, part-combiner does work on a copy; why copy again?
+ Also, simply `working on a copy' doesn't work: if request-chord's
+ get_music doesn't do next (), we'll stay in this loop forever?
+ Sequential_music_iterator* urg = (Sequential_music_iterator*)this;
SCM s = SCM_EOL;
while (1)
{
Moment local_until = until - here_mom_;
SCM s = SCM_EOL;
while (1)
{
Moment local_until = until - here_mom_;
+ while (urg->iter_p_->ok ())
{
Moment here = iter_p_->pending_moment ();
if (here != local_until)
return s;
{
Moment here = iter_p_->pending_moment ();
if (here != local_until)
return s;
- s = gh_append2 (iter_p_->get_music (local_until), s);
+ s = gh_append2 (urg->iter_p_->get_music (local_until), s);
+ if (!urg->iter_p_->ok ())
- if (gh_pair_p (cursor_))
- start_next_element ();
+ if (gh_pair_p (urg->cursor_))
+ urg->start_next_element ();
else
return s;
}
}
return s;
else
return s;
}
}
return s;
Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
: Music_iterator (src)
{
Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
: Music_iterator (src)
{
- last_processed_mom_ = -1;
+ last_processed_mom_ = src.last_processed_mom_;
+ length_mom_ = src.length_mom_;