Commit a9b5ebef1f19ae50deee68401dd090c0f5587400

Authored by m-holger
1 parent f84bf977

Minor code formatting fixes

libqpdf/InputSource.cc
@@ -58,8 +58,7 @@ InputSource::findFirst(char const* start_chars, qpdf_offset_t offset, size_t len @@ -58,8 +58,7 @@ InputSource::findFirst(char const* start_chars, qpdf_offset_t offset, size_t len
58 size_t size = sizeof(buf) - 1; 58 size_t size = sizeof(buf) - 1;
59 if ((strlen(start_chars) < 1) || (strlen(start_chars) > size)) { 59 if ((strlen(start_chars) < 1) || (strlen(start_chars) > size)) {
60 throw std::logic_error( 60 throw std::logic_error(
61 - "InputSource::findSource called with"  
62 - " too small or too large of a character sequence"); 61 + "InputSource::findSource called with too small or too large of a character sequence");
63 } 62 }
64 63
65 char* p = nullptr; 64 char* p = nullptr;
libqpdf/NNTree.cc
@@ -63,8 +63,7 @@ NNTreeIterator::updateIValue(bool allow_invalid) @@ -63,8 +63,7 @@ NNTreeIterator::updateIValue(bool allow_invalid)
63 if (!okay) { 63 if (!okay) {
64 if (!allow_invalid) { 64 if (!allow_invalid) {
65 throw std::logic_error( 65 throw std::logic_error(
66 - "attempt made to dereference an invalid"  
67 - " name/number tree iterator"); 66 + "attempt made to dereference an invalid name/number tree iterator");
68 } 67 }
69 this->ivalue.first = QPDFObjectHandle(); 68 this->ivalue.first = QPDFObjectHandle();
70 this->ivalue.second = QPDFObjectHandle(); 69 this->ivalue.second = QPDFObjectHandle();
libqpdf/Pl_AES_PDF.cc
@@ -111,9 +111,7 @@ Pl_AES_PDF::finish() @@ -111,9 +111,7 @@ Pl_AES_PDF::finish()
111 // However, we have encountered files for which the output is not a multiple of the 111 // However, we have encountered files for which the output is not a multiple of the
112 // block size. In this case, pad with zeroes and hope for the best. 112 // block size. In this case, pad with zeroes and hope for the best.
113 if (this->offset >= this->buf_size) { 113 if (this->offset >= this->buf_size) {
114 - throw std::logic_error(  
115 - "buffer overflow in AES encryption"  
116 - " pipeline"); 114 + throw std::logic_error("buffer overflow in AES encryption pipeline");
117 } 115 }
118 std::memset(this->inbuf + this->offset, 0, this->buf_size - this->offset); 116 std::memset(this->inbuf + this->offset, 0, this->buf_size - this->offset);
119 this->offset = this->buf_size; 117 this->offset = this->buf_size;
libqpdf/Pl_ASCIIHexDecoder.cc
@@ -4,6 +4,8 @@ @@ -4,6 +4,8 @@
4 #include <cctype> 4 #include <cctype>
5 #include <stdexcept> 5 #include <stdexcept>
6 6
  7 +using namespace std::literals;
  8 +
7 Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(char const* identifier, Pipeline* next) : 9 Pl_ASCIIHexDecoder::Pl_ASCIIHexDecoder(char const* identifier, Pipeline* next) :
8 Pipeline(identifier, next) 10 Pipeline(identifier, next)
9 { 11 {
@@ -46,11 +48,7 @@ Pl_ASCIIHexDecoder::write(unsigned char const* buf, size_t len) @@ -46,11 +48,7 @@ Pl_ASCIIHexDecoder::write(unsigned char const* buf, size_t len)
46 char t[2]; 48 char t[2];
47 t[0] = ch; 49 t[0] = ch;
48 t[1] = 0; 50 t[1] = 0;
49 - throw std::runtime_error(  
50 - std::string(  
51 - "character out of range"  
52 - " during base Hex decode: ") +  
53 - t); 51 + throw std::runtime_error("character out of range during base Hex decode: "s + t);
54 } 52 }
55 break; 53 break;
56 } 54 }
libqpdf/QPDF.cc
@@ -1390,9 +1390,7 @@ QPDF::showXRefTable() @@ -1390,9 +1390,7 @@ QPDF::showXRefTable()
1390 break; 1390 break;
1391 1391
1392 default: 1392 default:
1393 - throw std::logic_error(  
1394 - "unknown cross-reference table type while"  
1395 - " showing xref_table"); 1393 + throw std::logic_error("unknown cross-reference table type while showing xref_table");
1396 break; 1394 break;
1397 } 1395 }
1398 m->log->info("\n"); 1396 m->log->info("\n");
@@ -2296,8 +2294,7 @@ QPDF::copyForeignObject(QPDFObjectHandle foreign) @@ -2296,8 +2294,7 @@ QPDF::copyForeignObject(QPDFObjectHandle foreign)
2296 ObjCopier& obj_copier = m->object_copiers[other.m->unique_id]; 2294 ObjCopier& obj_copier = m->object_copiers[other.m->unique_id];
2297 if (!obj_copier.visiting.empty()) { 2295 if (!obj_copier.visiting.empty()) {
2298 throw std::logic_error( 2296 throw std::logic_error(
2299 - "obj_copier.visiting is not empty"  
2300 - " at the beginning of copyForeignObject"); 2297 + "obj_copier.visiting is not empty at the beginning of copyForeignObject");
2301 } 2298 }
2302 2299
2303 // Make sure we have an object in this file for every referenced object in the old file. 2300 // Make sure we have an object in this file for every referenced object in the old file.
libqpdf/QPDFFormFieldObjectHelper.cc
@@ -752,8 +752,7 @@ QPDFFormFieldObjectHelper::generateTextAppearance(QPDFAnnotationObjectHelper&amp; ao @@ -752,8 +752,7 @@ QPDFFormFieldObjectHelper::generateTextAppearance(QPDFAnnotationObjectHelper&amp; ao
752 QPDFObjectHandle::Rectangle rect = aoh.getRect(); 752 QPDFObjectHandle::Rectangle rect = aoh.getRect();
753 QPDFObjectHandle::Rectangle bbox(0, 0, rect.urx - rect.llx, rect.ury - rect.lly); 753 QPDFObjectHandle::Rectangle bbox(0, 0, rect.urx - rect.llx, rect.ury - rect.lly);
754 QPDFObjectHandle dict = QPDFObjectHandle::parse( 754 QPDFObjectHandle dict = QPDFObjectHandle::parse(
755 - "<< /Resources << /ProcSet [ /PDF /Text ] >>"  
756 - " /Type /XObject /Subtype /Form >>"); 755 + "<< /Resources << /ProcSet [ /PDF /Text ] >> /Type /XObject /Subtype /Form >>");
757 dict.replaceKey("/BBox", QPDFObjectHandle::newFromRectangle(bbox)); 756 dict.replaceKey("/BBox", QPDFObjectHandle::newFromRectangle(bbox));
758 AS = QPDFObjectHandle::newStream(oh().getOwningQPDF(), "/Tx BMC\nEMC\n"); 757 AS = QPDFObjectHandle::newStream(oh().getOwningQPDF(), "/Tx BMC\nEMC\n");
759 AS.replaceDict(dict); 758 AS.replaceDict(dict);
libqpdf/QPDFJob.cc
@@ -618,9 +618,7 @@ QPDFJob::checkConfiguration() @@ -618,9 +618,7 @@ QPDFJob::checkConfiguration()
618 usage("no output file may be given for this option"); 618 usage("no output file may be given for this option");
619 } 619 }
620 if (m->check_requires_password && m->check_is_encrypted) { 620 if (m->check_requires_password && m->check_is_encrypted) {
621 - usage(  
622 - "--requires-password and --is-encrypted may not be given"  
623 - " together"); 621 + usage("--requires-password and --is-encrypted may not be given together");
624 } 622 }
625 623
626 if (m->encrypt && (!m->allow_insecure) && 624 if (m->encrypt && (!m->allow_insecure) &&
@@ -3142,9 +3140,7 @@ QPDFJob::writeJSON(QPDF&amp; pdf) @@ -3142,9 +3140,7 @@ QPDFJob::writeJSON(QPDF&amp; pdf)
3142 fp = std::make_shared<Pl_StdioFile>("json output", fc->f); 3140 fp = std::make_shared<Pl_StdioFile>("json output", fc->f);
3143 } else if ((m->json_stream_data == qpdf_sj_file) && m->json_stream_prefix.empty()) { 3141 } else if ((m->json_stream_data == qpdf_sj_file) && m->json_stream_prefix.empty()) {
3144 QTC::TC("qpdf", "QPDFJob need json-stream-prefix for stdout"); 3142 QTC::TC("qpdf", "QPDFJob need json-stream-prefix for stdout");
3145 - usage(  
3146 - "please specify --json-stream-prefix since the input file "  
3147 - "name is unknown"); 3143 + usage("please specify --json-stream-prefix since the input file name is unknown");
3148 } else { 3144 } else {
3149 QTC::TC("qpdf", "QPDFJob write json to stdout"); 3145 QTC::TC("qpdf", "QPDFJob write json to stdout");
3150 m->log->saveToStandardOutput(true); 3146 m->log->saveToStandardOutput(true);
libqpdf/QPDFObjectHandle.cc
@@ -1258,8 +1258,7 @@ QPDFObjectHandle::getUniqueResourceName( @@ -1258,8 +1258,7 @@ QPDFObjectHandle::getUniqueResourceName(
1258 // The number of candidates we test is more than the 1258 // The number of candidates we test is more than the
1259 // number of keys we're checking against. 1259 // number of keys we're checking against.
1260 throw std::logic_error( 1260 throw std::logic_error(
1261 - "unable to find unconflicting name in"  
1262 - " QPDFObjectHandle::getUniqueResourceName"); 1261 + "unable to find unconflicting name in QPDFObjectHandle::getUniqueResourceName");
1263 } 1262 }
1264 1263
1265 // Dictionary mutators are in QPDF_Dictionary.cc 1264 // Dictionary mutators are in QPDF_Dictionary.cc
libqpdf/QPDFPageObjectHelper.cc
@@ -718,8 +718,7 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations) @@ -718,8 +718,7 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations)
718 QPDFObjectHandle bbox = getTrimBox(false).shallowCopy(); 718 QPDFObjectHandle bbox = getTrimBox(false).shallowCopy();
719 if (!bbox.isRectangle()) { 719 if (!bbox.isRectangle()) {
720 oh().warnIfPossible( 720 oh().warnIfPossible(
721 - "bounding box is invalid; form"  
722 - " XObject created from page will not work"); 721 + "bounding box is invalid; form XObject created from page will not work");
723 } 722 }
724 newdict.replaceKey("/BBox", bbox); 723 newdict.replaceKey("/BBox", bbox);
725 auto provider = 724 auto provider =
libqpdf/QPDFWriter.cc
@@ -1013,8 +1013,7 @@ QPDFWriter::pushMD5Pipeline(PipelinePopper&amp; pp) @@ -1013,8 +1013,7 @@ QPDFWriter::pushMD5Pipeline(PipelinePopper&amp; pp)
1013 if (!m->id2.empty()) { 1013 if (!m->id2.empty()) {
1014 // Can't happen in the code 1014 // Can't happen in the code
1015 throw std::logic_error( 1015 throw std::logic_error(
1016 - "Deterministic ID computation enabled after ID"  
1017 - " generation has already occurred."); 1016 + "Deterministic ID computation enabled after ID generation has already occurred.");
1018 } 1017 }
1019 qpdf_assert_debug(m->deterministic_id); 1018 qpdf_assert_debug(m->deterministic_id);
1020 qpdf_assert_debug(m->md5_pipeline == nullptr); 1019 qpdf_assert_debug(m->md5_pipeline == nullptr);
libqpdf/QPDF_linearization.cc
@@ -167,9 +167,7 @@ QPDF::readLinearizationData() @@ -167,9 +167,7 @@ QPDF::readLinearizationData()
167 // that prevent loading. 167 // that prevent loading.
168 168
169 if (!isLinearized()) { 169 if (!isLinearized()) {
170 - throw std::logic_error(  
171 - "called readLinearizationData for file"  
172 - " that is not linearized"); 170 + throw std::logic_error("called readLinearizationData for file that is not linearized");
173 } 171 }
174 172
175 // /L is read and stored in linp by isLinearized() 173 // /L is read and stored in linp by isLinearized()
@@ -468,8 +466,7 @@ QPDF::checkLinearizationInternal() @@ -468,8 +466,7 @@ QPDF::checkLinearizationInternal()
468 if (m->file->tell() != m->first_xref_item_offset) { 466 if (m->file->tell() != m->first_xref_item_offset) {
469 QTC::TC("qpdf", "QPDF err /T mismatch"); 467 QTC::TC("qpdf", "QPDF err /T mismatch");
470 linearizationWarning( 468 linearizationWarning(
471 - "space before first xref item (/T) mismatch "  
472 - "(computed = " + 469 + "space before first xref item (/T) mismatch (computed = " +
473 std::to_string(m->first_xref_item_offset) + 470 std::to_string(m->first_xref_item_offset) +
474 "; file = " + std::to_string(m->file->tell())); 471 "; file = " + std::to_string(m->file->tell()));
475 } 472 }
@@ -694,9 +691,7 @@ QPDF::checkHPageOffset( @@ -694,9 +691,7 @@ QPDF::checkHPageOffset(
694 for (size_t i = 0; i < toS(he.nshared_objects); ++i) { 691 for (size_t i = 0; i < toS(he.nshared_objects); ++i) {
695 int idx = he.shared_identifiers.at(i); 692 int idx = he.shared_identifiers.at(i);
696 if (shared_idx_to_obj.count(idx) == 0) { 693 if (shared_idx_to_obj.count(idx) == 0) {
697 - stopOnError(  
698 - "unable to get object for item in"  
699 - " shared objects hint table"); 694 + stopOnError("unable to get object for item in shared objects hint table");
700 } 695 }
701 hint_shared.insert(shared_idx_to_obj[idx]); 696 hint_shared.insert(shared_idx_to_obj[idx]);
702 } 697 }
@@ -759,15 +754,12 @@ QPDF::checkHSharedObject(std::vector&lt;QPDFObjectHandle&gt; const&amp; pages, std::map&lt;in @@ -759,15 +754,12 @@ QPDF::checkHSharedObject(std::vector&lt;QPDFObjectHandle&gt; const&amp; pages, std::map&lt;in
759 if (i == so.nshared_first_page) { 754 if (i == so.nshared_first_page) {
760 QTC::TC("qpdf", "QPDF lin check shared past first page"); 755 QTC::TC("qpdf", "QPDF lin check shared past first page");
761 if (m->part8.empty()) { 756 if (m->part8.empty()) {
762 - linearizationWarning(  
763 - "part 8 is empty but nshared_total > "  
764 - "nshared_first_page"); 757 + linearizationWarning("part 8 is empty but nshared_total > nshared_first_page");
765 } else { 758 } else {
766 int obj = m->part8.at(0).getObjectID(); 759 int obj = m->part8.at(0).getObjectID();
767 if (obj != so.first_shared_obj) { 760 if (obj != so.first_shared_obj) {
768 linearizationWarning( 761 linearizationWarning(
769 - "first shared object number mismatch: "  
770 - "hint table = " + 762 + "first shared object number mismatch: hint table = " +
771 std::to_string(so.first_shared_obj) + 763 std::to_string(so.first_shared_obj) +
772 "; computed = " + std::to_string(obj)); 764 "; computed = " + std::to_string(obj));
773 } 765 }
@@ -846,9 +838,7 @@ QPDF::checkHOutlines() @@ -846,9 +838,7 @@ QPDF::checkHOutlines()
846 std::to_string(table_length) + "; computed = " + std::to_string(length)); 838 std::to_string(table_length) + "; computed = " + std::to_string(length));
847 } 839 }
848 } else { 840 } else {
849 - linearizationWarning(  
850 - "incorrect first object number in outline "  
851 - "hints table."); 841 + linearizationWarning("incorrect first object number in outline hints table.");
852 } 842 }
853 } else { 843 } else {
854 linearizationWarning("incorrect object count in outline hint table"); 844 linearizationWarning("incorrect object count in outline hint table");
@@ -1131,9 +1121,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1131,9 +1121,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1131 break; 1121 break;
1132 1122
1133 case ObjUser::ou_bad: 1123 case ObjUser::ou_bad:
1134 - stopOnError(  
1135 - "INTERNAL ERROR: QPDF::calculateLinearizationData: "  
1136 - "invalid user type"); 1124 + stopOnError("INTERNAL ERROR: QPDF::calculateLinearizationData: invalid user type");
1137 break; 1125 break;
1138 } 1126 }
1139 } 1127 }
@@ -1196,9 +1184,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1196,9 +1184,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1196 // Part 4: open document objects. We don't care about the order. 1184 // Part 4: open document objects. We don't care about the order.
1197 1185
1198 if (lc_root.size() != 1) { 1186 if (lc_root.size() != 1) {
1199 - stopOnError(  
1200 - "found other than one root while"  
1201 - " calculating linearization data"); 1187 + stopOnError("found other than one root while calculating linearization data");
1202 } 1188 }
1203 m->part4.push_back(getObject(*(lc_root.begin()))); 1189 m->part4.push_back(getObject(*(lc_root.begin())));
1204 for (auto const& og: lc_open_document) { 1190 for (auto const& og: lc_open_document) {
@@ -1255,8 +1241,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1255,8 +1241,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1255 QPDFObjGen page_og(pages.at(i).getObjGen()); 1241 QPDFObjGen page_og(pages.at(i).getObjGen());
1256 if (!lc_other_page_private.count(page_og)) { 1242 if (!lc_other_page_private.count(page_og)) {
1257 stopOnError( 1243 stopOnError(
1258 - "INTERNAL ERROR: "  
1259 - "QPDF::calculateLinearizationData: page object for page " + 1244 + "INTERNAL ERROR: QPDF::calculateLinearizationData: page object for page " +
1260 std::to_string(i) + " not in lc_other_page_private"); 1245 std::to_string(i) + " not in lc_other_page_private");
1261 } 1246 }
1262 lc_other_page_private.erase(page_og); 1247 lc_other_page_private.erase(page_og);
@@ -1269,9 +1254,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1269,9 +1254,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1269 1254
1270 ObjUser ou(ObjUser::ou_page, toI(i)); 1255 ObjUser ou(ObjUser::ou_page, toI(i));
1271 if (m->obj_user_to_objects.count(ou) == 0) { 1256 if (m->obj_user_to_objects.count(ou) == 0) {
1272 - stopOnError(  
1273 - "found unreferenced page while"  
1274 - " calculating linearization data"); 1257 + stopOnError("found unreferenced page while calculating linearization data");
1275 } 1258 }
1276 for (auto const& og: m->obj_user_to_objects[ou]) { 1259 for (auto const& og: m->obj_user_to_objects[ou]) {
1277 if (lc_other_page_private.count(og)) { 1260 if (lc_other_page_private.count(og)) {
@@ -1284,9 +1267,8 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1284,9 +1267,8 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1284 // That should have covered all part7 objects. 1267 // That should have covered all part7 objects.
1285 if (!lc_other_page_private.empty()) { 1268 if (!lc_other_page_private.empty()) {
1286 stopOnError( 1269 stopOnError(
1287 - "INTERNAL ERROR:"  
1288 - " QPDF::calculateLinearizationData: lc_other_page_private is "  
1289 - "not empty after generation of part7"); 1270 + "INTERNAL ERROR: QPDF::calculateLinearizationData:"
  1271 + " lc_other_page_private is not empty after generation of part7");
1290 } 1272 }
1291 1273
1292 // Part 8: other pages' shared objects 1274 // Part 8: other pages' shared objects
@@ -1307,9 +1289,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1307,9 +1289,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1307 std::set<QPDFObjGen> pages_ogs = 1289 std::set<QPDFObjGen> pages_ogs =
1308 m->obj_user_to_objects[ObjUser(ObjUser::ou_root_key, "/Pages")]; 1290 m->obj_user_to_objects[ObjUser(ObjUser::ou_root_key, "/Pages")];
1309 if (pages_ogs.empty()) { 1291 if (pages_ogs.empty()) {
1310 - stopOnError(  
1311 - "found empty pages tree while"  
1312 - " calculating linearization data"); 1292 + stopOnError("found empty pages tree while calculating linearization data");
1313 } 1293 }
1314 for (auto const& og: pages_ogs) { 1294 for (auto const& og: pages_ogs) {
1315 if (lc_other.count(og)) { 1295 if (lc_other.count(og)) {
@@ -1418,9 +1398,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data) @@ -1418,9 +1398,7 @@ QPDF::calculateLinearizationData(T const&amp; object_stream_data)
1418 CHPageOffsetEntry& pe = m->c_page_offset_data.entries.at(i); 1398 CHPageOffsetEntry& pe = m->c_page_offset_data.entries.at(i);
1419 ObjUser ou(ObjUser::ou_page, toI(i)); 1399 ObjUser ou(ObjUser::ou_page, toI(i));
1420 if (m->obj_user_to_objects.count(ou) == 0) { 1400 if (m->obj_user_to_objects.count(ou) == 0) {
1421 - stopOnError(  
1422 - "found unreferenced page while"  
1423 - " calculating linearization data"); 1401 + stopOnError("found unreferenced page while calculating linearization data");
1424 } 1402 }
1425 for (auto const& og: m->obj_user_to_objects[ou]) { 1403 for (auto const& og: m->obj_user_to_objects[ou]) {
1426 if ((m->object_to_obj_users[og].size() > 1) && (obj_to_index.count(og.getObj()) > 0)) { 1404 if ((m->object_to_obj_users[og].size() > 1) && (obj_to_index.count(og.getObj()) > 0)) {
@@ -1759,9 +1737,7 @@ QPDF::writeHSharedObject(BitWriter&amp; w) @@ -1759,9 +1737,7 @@ QPDF::writeHSharedObject(BitWriter&amp; w)
1759 for (size_t i = 0; i < toS(nitems); ++i) { 1737 for (size_t i = 0; i < toS(nitems); ++i) {
1760 // If signature were present, we'd have to write a 128-bit hash. 1738 // If signature were present, we'd have to write a 128-bit hash.
1761 if (entries.at(i).signature_present != 0) { 1739 if (entries.at(i).signature_present != 0) {
1762 - stopOnError(  
1763 - "found unexpected signature present"  
1764 - " while writing linearization data"); 1740 + stopOnError("found unexpected signature present while writing linearization data");
1765 } 1741 }
1766 } 1742 }
1767 write_vector_int(w, nitems, entries, t.nbits_nobjects, &HSharedObjectEntry::nobjects_minus_one); 1743 write_vector_int(w, nitems, entries, t.nbits_nobjects, &HSharedObjectEntry::nobjects_minus_one);
libqpdf/QPDF_optimization.cc
@@ -168,8 +168,7 @@ QPDF::pushInheritedAttributesToPage(bool allow_changes, bool warn_skipped_keys) @@ -168,8 +168,7 @@ QPDF::pushInheritedAttributesToPage(bool allow_changes, bool warn_skipped_keys)
168 warn_skipped_keys); 168 warn_skipped_keys);
169 if (!key_ancestors.empty()) { 169 if (!key_ancestors.empty()) {
170 throw std::logic_error( 170 throw std::logic_error(
171 - "key_ancestors not empty after"  
172 - " pushing inherited attributes to pages"); 171 + "key_ancestors not empty after pushing inherited attributes to pages");
173 } 172 }
174 m->pushed_inherited_attributes_to_pages = true; 173 m->pushed_inherited_attributes_to_pages = true;
175 m->ever_pushed_inherited_attributes_to_pages = true; 174 m->ever_pushed_inherited_attributes_to_pages = true;