{
Paper_book *paper_book_part = book->process (paper, layout, output_paper_book);
if (paper_book_part)
- output_paper_book->add_bookpart (paper_book_part->self_scm ());
+ {
+ output_paper_book->add_bookpart (paper_book_part->self_scm ());
+ paper_book_part->unprotect ();
+ }
}
}
+ /* In a Paper_book, bookparts are stored in straight order */
+ output_paper_book->bookparts_ = scm_reverse_x (output_paper_book->bookparts_, SCM_EOL);
}
void
if (scm_is_pair (bookparts_))
{
- for (SCM p = scm_reverse (bookparts_); scm_is_pair (p); p = scm_cdr (p))
+ for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p))
if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p)))
{
bool is_last_part = (is_last && !scm_is_pair (scm_cdr (p)));
systems_ = SCM_EOL;
if (scm_is_pair (bookparts_))
{
- for (SCM p = scm_reverse (bookparts_); scm_is_pair (p); p = scm_cdr (p))
+ for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p))
if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p)))
systems_ = scm_append_x (scm_list_2 (systems_, pbookpart->systems ()));
}
pages_ = SCM_EOL;
if (scm_is_pair (bookparts_))
{
- for (SCM p = scm_reverse (bookparts_); scm_is_pair (p); p = scm_cdr (p))
+ for (SCM p = bookparts_; scm_is_pair (p); p = scm_cdr (p))
if (Paper_book *pbookpart = unsmob_paper_book (scm_car (p)))
pages_ = scm_append_x (scm_list_2 (pages_, pbookpart->pages ()));
}