On 2013/12/21 02:58:05, Devon Schudy wrote:
OK: Issue 3744 fixes that for all score-level translators by creating the Score context before iteration starts. Creating it later was dubious anyway, because Score_engraver or Score_performer is needed for iteration to work. AFAICT it's never valid to explicitly create a score context (and the notation manual says so); if that's not true, then this isn't safe.
Where does the manual say that? It's not true. Most particularly, it is possible to do \score { \new Score \with { .... } { ... } } The Japanese manual actually does that for removing Timing_translator. While it appears like the other manuals do this differently, I don't think that this practice has been officially "forbidden" and I can see no reason do to so.
Other contexts can legitimately be created during iteration, so their translators can still miss start_translation_timestep. That could be prevented by calling start_translation_timestep in Translator_group::create_child_translator, but that's not strictly accurate since it's not actually the start of a timestep.
Better late than never... The problem is then to avoid calling start_translation_timestep twice under any circumstances. https://codereview.appspot.com/42600043/ _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel