# # # patch "database.cc" # from [ba0efb380dfc9c0582b0368b0e6a1073ebf4122d] # to [2e1c65cb247666cfbf9d870f2a8be91153956625] # # patch "roster.cc" # from [7a8c3076fc56de12ee153e1b3f300b7291c80802] # to [060cd1737c3bfc1e7c7e94c5ca745e87de5505c9] # # patch "roster.hh" # from [aaa305a2796511d77f586beaa64cad29eba054d7] # to [97de561a46c6fa670522f9425e0217e024452d59] # ============================================================ --- database.cc ba0efb380dfc9c0582b0368b0e6a1073ebf4122d +++ database.cc 2e1c65cb247666cfbf9d870f2a8be91153956625 @@ -2934,7 +2934,7 @@ database::put_roster_for_revision(revisi manifest_id roster_manifest_id; MM(roster_manifest_id); make_roster_for_revision(*this, rev, new_id, *ros_writeable, *mm_writeable); - calculate_ident(*ros_writeable, roster_manifest_id); + calculate_ident(*ros_writeable, roster_manifest_id, false); E(rev.new_manifest == roster_manifest_id, rev.made_from, F("revision contains incorrect manifest_id")); // const'ify the objects, suitable for caching etc. ============================================================ --- roster.cc 7a8c3076fc56de12ee153e1b3f300b7291c80802 +++ roster.cc 060cd1737c3bfc1e7c7e94c5ca745e87de5505c9 @@ -2808,12 +2808,16 @@ write_roster_and_marking(roster_t const write_roster_and_marking(roster_t const & ros, marking_map const & mm, data & dat, - bool print_local_parts) + bool print_local_parts, + bool do_sanity_check) { - if (print_local_parts) - ros.check_sane_against(mm); - else - ros.check_sane(true); + if (do_sanity_check) + { + if (print_local_parts) + ros.check_sane_against(mm); + else + ros.check_sane(true); + } ros.print_to(dat, mm, print_local_parts); } @@ -2824,28 +2828,30 @@ write_roster_and_marking(roster_t const roster_data & dat) { data tmp; - write_roster_and_marking(ros, mm, tmp, true); + write_roster_and_marking(ros, mm, tmp, true, true); dat = roster_data(tmp); } void write_manifest_of_roster(roster_t const & ros, - manifest_data & dat) + manifest_data & dat, + bool do_sanity_check) { data tmp; marking_map mm; - write_roster_and_marking(ros, mm, tmp, false); + write_roster_and_marking(ros, mm, tmp, false, do_sanity_check); dat = manifest_data(tmp); } void calculate_ident(roster_t const & ros, - manifest_id & ident) + manifest_id & ident, + bool do_sanity_check) { manifest_data tmp; if (!ros.all_nodes().empty()) { - write_manifest_of_roster(ros, tmp); + write_manifest_of_roster(ros, tmp, do_sanity_check); } calculate_ident(tmp, ident); } ============================================================ --- roster.hh aaa305a2796511d77f586beaa64cad29eba054d7 +++ roster.hh 97de561a46c6fa670522f9425e0217e024452d59 @@ -423,11 +423,13 @@ write_manifest_of_roster(roster_t const void write_manifest_of_roster(roster_t const & ros, - manifest_data & dat); + manifest_data & dat, + bool do_sanity_check = true); void calculate_ident(roster_t const & ros, - manifest_id & ident); + manifest_id & ident, + bool do_sanity_check = true); // for roster_delta