<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>43436</bug_id>
          
          <creation_ts>2010-08-03 11:16:38 -0700</creation_ts>
          <short_desc>Simple diffs for ~5% complex layout speedup</short_desc>
          <delta_ts>2010-08-05 04:55:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ned Holbrook">ned</reporter>
          <assigned_to name="Ned Holbrook">ned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259567</commentid>
    <comment_count>0</comment_count>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-08-03 11:16:38 -0700</bug_when>
    <thetext>Attached please find suggested changes that, using a simple test case of my own devising, improve by 4-5% the time to render a Roman string of 69 words using &quot;text-rendering: optimizeLegibility&quot;. These changes have no effect on &quot;run-webkit-tests --complex-text fast/text&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259575</commentid>
    <comment_count>1</comment_count>
      <attachid>63357</attachid>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-08-03 11:24:25 -0700</bug_when>
    <thetext>Created attachment 63357
Proposed changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259582</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-03 11:31:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/8237336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259600</commentid>
    <comment_count>3</comment_count>
      <attachid>63357</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-03 11:56:24 -0700</bug_when>
    <thetext>Comment on attachment 63357
Proposed changes.

This looks good.

&gt; -        RetainPtr&lt;CFMutableDataRef&gt; m_coreTextIndicesData;
&gt; +        Vector&lt;CFIndex, 64&gt; m_coreTextIndicesVector;

Maybe m_coreTextIndicesStorage would be a better name? Or m_coreTextIndicesBuffer? The name should communicate the fact that we should access this through the m_coreTextIndices pointer and not directly.

&gt; +    m_coreTextIndicesVector.reserveCapacity(m_stringLength);

Since this is always used on a new vector, you could use reserveInitialCapacity for slightly better performance.

r=me without additional changes, but you might want to do one of the improvements above. If you decide not to do either improvement, please let a committer know so they can set commit-queue+ on the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259605</commentid>
    <comment_count>4</comment_count>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-08-03 12:02:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Maybe m_coreTextIndicesStorage would be a better name? Or m_coreTextIndicesBuffer? The name should communicate the fact that we should access this through the m_coreTextIndices pointer and not directly.

Since the naming of the new member variable matches that of the existing m_glyphsVector and m_advancesVector, I think I&apos;ll leave this one as is.
 
&gt; Since this is always used on a new vector, you could use reserveInitialCapacity for slightly better performance.

Sounds like a plan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259606</commentid>
    <comment_count>5</comment_count>
      <attachid>63364</attachid>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-08-03 12:03:40 -0700</bug_when>
    <thetext>Created attachment 63364
Changes per review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260086</commentid>
    <comment_count>6</comment_count>
      <attachid>63357</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-04 10:22:45 -0700</bug_when>
    <thetext>Comment on attachment 63357
Proposed changes.

Cleared Darin Adler&apos;s review+ from obsolete attachment 63357 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260525</commentid>
    <comment_count>7</comment_count>
      <attachid>63364</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-05 04:54:59 -0700</bug_when>
    <thetext>Comment on attachment 63364
Changes per review.

Clearing flags on attachment: 63364

Committed r64734: &lt;http://trac.webkit.org/changeset/64734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260526</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-05 04:55:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63357</attachid>
            <date>2010-08-03 11:24:25 -0700</date>
            <delta_ts>2010-08-04 10:22:45 -0700</delta_ts>
            <desc>Proposed changes.</desc>
            <filename>patch43436.txt</filename>
            <type>text/plain</type>
            <size>6610</size>
            <attacher name="Ned Holbrook">ned</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMDMgIE5lZCBIb2xicm9vayAgPG5ob2xicm9va0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
fjUlIGNvbXBsZXggbGF5b3V0IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0MzYKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6
Q29tcGxleFRleHRSdW4pOiBVc2UgVmVjdG9yIHJhdGhlciB0aGFuIENGTXV0YWJsZURhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpj
cmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQ29yZVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJh
Y3RlcnNDb3JlVGV4dCk6IEF2b2lkIHR5cGVzZXR0ZXIgYWxsb2NhdGlvbiB1bmxlc3MgdXNpbmcg
dHlwZXNldHRlciBvcHRpb25zLgorCiAyMDEwLTA4LTAzICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJv
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDYzNzgxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3N0cmluZ0xvY2F0aW9u
OwogICAgICAgICBzaXplX3QgbV9zdHJpbmdMZW5ndGg7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fY29yZVRleHRJbmRpY2VzRGF0YTsK
KyAgICAgICAgVmVjdG9yPENGSW5kZXgsIDY0PiBtX2NvcmVUZXh0SW5kaWNlc1ZlY3RvcjsKICAg
ICAgICAgY29uc3QgQ0ZJbmRleCogbV9jb3JlVGV4dEluZGljZXM7CiAjZW5kaWYKICNpZiBVU0Uo
QVRTVUkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCShyZXZpc2lvbiA2Mzc4
MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDkgQEAgQ29tcGxleFRl
eHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6QwogICAgIG1fZ2x5cGhDb3VudCA9IENUUnVu
R2V0R2x5cGhDb3VudChtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBtX2NvcmVUZXh0SW5kaWNl
cyA9IENUUnVuR2V0U3RyaW5nSW5kaWNlc1B0cihtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBp
ZiAoIW1fY29yZVRleHRJbmRpY2VzKSB7Ci0gICAgICAgIG1fY29yZVRleHRJbmRpY2VzRGF0YS5h
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9nbHlwaENv
dW50ICogc2l6ZW9mKENGSW5kZXgpKSk7Ci0gICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1f
Y29yZVRleHRJbmRpY2VzRGF0YS5nZXQoKSwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgp
KTsKLSAgICAgICAgbV9jb3JlVGV4dEluZGljZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IENG
SW5kZXgqPihDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0
KCkpKTsKLSAgICAgICAgQ1RSdW5HZXRTdHJpbmdJbmRpY2VzKG1fY29yZVRleHRSdW4uZ2V0KCks
IENGUmFuZ2VNYWtlKDAsIDApLCBjb25zdF9jYXN0PENGSW5kZXgqPihtX2NvcmVUZXh0SW5kaWNl
cykpOworICAgICAgICBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5ncm93KG1fZ2x5cGhDb3VudCk7
CisgICAgICAgIENUUnVuR2V0U3RyaW5nSW5kaWNlcyhtX2NvcmVUZXh0UnVuLmdldCgpLCBDRlJh
bmdlTWFrZSgwLCAwKSwgbV9jb3JlVGV4dEluZGljZXNWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAg
bV9jb3JlVGV4dEluZGljZXMgPSBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5kYXRhKCk7CiAgICAg
fQogCiAgICAgbV9nbHlwaHMgPSBDVFJ1bkdldEdseXBoc1B0cihtX2NvcmVUZXh0UnVuLmdldCgp
KTsKQEAgLTcwLDE3ICs2OSwxNiBAQCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0
UnVuOjpDCiAgICAgICAgIENUUnVuR2V0QWR2YW5jZXMobV9jb3JlVGV4dFJ1bi5nZXQoKSwgQ0ZS
YW5nZU1ha2UoMCwgMCksIG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgbV9hZHZh
bmNlcyA9IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpOwogICAgIH0KLQogfQogCiAvLyBNaXNzaW5n
IGdseXBocyBydW4gY29uc3RydWN0b3IuIENvcmUgVGV4dCB3aWxsIG5vdCBnZW5lcmF0ZSBhIHJ1
biBvZiBtaXNzaW5nIGdseXBocywgaW5zdGVhZCBmYWxsaW5nIGJhY2sgb24KIC8vIGdseXBocyBm
cm9tIExhc3RSZXNvcnQuIFdlIHdhbnQgdG8gdXNlIHRoZSBwcmltYXJ5IGZvbnQncyBtaXNzaW5n
IGdseXBoIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBmYXN0IHRleHQgY29kZSBwYXRoLgogdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZv
bnREYXRhQ29yZVRleHQoYm9vbCBsdHIpCiB7Ci0gICAgVmVjdG9yPENGSW5kZXgsIDE2PiBpbmRp
Y2VzOworICAgIG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLnJlc2VydmVDYXBhY2l0eShtX3N0cmlu
Z0xlbmd0aCk7CiAgICAgdW5zaWduZWQgciA9IDA7CiAgICAgd2hpbGUgKHIgPCBtX3N0cmluZ0xl
bmd0aCkgewotICAgICAgICBpbmRpY2VzLmFwcGVuZChyKTsKKyAgICAgICAgbV9jb3JlVGV4dElu
ZGljZXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHIpOwogICAgICAgICBpZiAoVV9JU19TVVJST0dB
VEUobV9jaGFyYWN0ZXJzW3JdKSkgewogICAgICAgICAgICAgQVNTRVJUKHIgKyAxIDwgbV9zdHJp
bmdMZW5ndGgpOwogICAgICAgICAgICAgQVNTRVJUKFVfSVNfU1VSUk9HQVRFX0xFQUQobV9jaGFy
YWN0ZXJzW3JdKSk7CkBAIC04OSwxNCArODcsMTIgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xs
ZXI6OkNvbXBsZXhUZXh0UgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHIrKzsKICAgICB9
Ci0gICAgbV9nbHlwaENvdW50ID0gaW5kaWNlcy5zaXplKCk7CisgICAgbV9nbHlwaENvdW50ID0g
bV9jb3JlVGV4dEluZGljZXNWZWN0b3Iuc2l6ZSgpOwogICAgIGlmICghbHRyKSB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgciA9IDAsIGVuZCA9IG1fZ2x5cGhDb3VudCAtIDE7IHIgPCBtX2dseXBo
Q291bnQgLyAyOyArK3IsIC0tZW5kKQotICAgICAgICAgICAgc3RkOjpzd2FwKGluZGljZXNbcl0s
IGluZGljZXNbZW5kXSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAobV9jb3JlVGV4dEluZGljZXNW
ZWN0b3Jbcl0sIG1fY29yZVRleHRJbmRpY2VzVmVjdG9yW2VuZF0pOwogICAgIH0KLSAgICBtX2Nv
cmVUZXh0SW5kaWNlc0RhdGEuYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fZ2x5cGhDb3VudCAqIHNpemVvZihDRkluZGV4KSkpOwotICAgIENGRGF0YUFw
cGVuZEJ5dGVzKG1fY29yZVRleHRJbmRpY2VzRGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGluZGljZXMuZGF0YSgpKSwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5k
ZXgpKTsKLSAgICBtX2NvcmVUZXh0SW5kaWNlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ0ZJ
bmRleCo+KENGRGF0YUdldEJ5dGVQdHIobV9jb3JlVGV4dEluZGljZXNEYXRhLmdldCgpKSk7Cisg
ICAgbV9jb3JlVGV4dEluZGljZXMgPSBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5kYXRhKCk7CiAK
ICAgICAvLyBTeW50aGVzaXplIGEgcnVuIG9mIG1pc3NpbmcgZ2x5cGhzLgogICAgIG1fZ2x5cGhz
VmVjdG9yLmZpbGwoMCwgbV9nbHlwaENvdW50KTsKQEAgLTEyMCw3ICsxMTYsNyBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsCiAKICAgICBSZXRhaW5QdHI8Q0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nKEFkb3B0Q0YsIENGQXR0cmlidXRlZFN0
cmluZ0NyZWF0ZShOVUxMLCBzdHJpbmcuZ2V0KCksIGZvbnREYXRhLT5nZXRDRlN0cmluZ0F0dHJp
YnV0ZXMobV9mb250LnR5cGVzZXR0aW5nRmVhdHVyZXMoKSkpKTsKIAotICAgIFJldGFpblB0cjxD
VFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXI7CisgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGlu
ZTsKIAogICAgIGlmICghbV9tYXlVc2VOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbiB8fCBtX3J1bi5k
aXJlY3Rpb25hbE92ZXJyaWRlKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIG9wdGlv
bktleXNbXSA9IHsga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVsIH07CkBA
IC0xMzAsMTEgKzEyNiwxMSBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsCiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU2hvcnRUeXBlLCAmcnRs
Rm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKICAgICAgICAgc3RhdGljIENGRGljdGlvbmFy
eVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIHNpemVvZihvcHRpb25LZXlz
KSAvIHNpemVvZigqb3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgICAgICBzdGF0aWMg
Q0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgc2l6ZW9m
KG9wdGlvbktleXMpIC8gc2l6ZW9mKCpvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAg
ICAgIHR5cGVzZXR0ZXIuYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoQXR0cmlidXRlZFN0
cmluZ0FuZE9wdGlvbnMoYXR0cmlidXRlZFN0cmluZy5nZXQoKSwgbV9ydW4ubHRyKCkgPyBsdHJU
eXBlc2V0dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRpb25zKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHR5cGVzZXR0ZXIuYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoQXR0cmlidXRl
ZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDVFR5
cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIoQWRvcHRDRiwgQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmdBbmRPcHRpb25zKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIG1fcnVuLmx0
cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVyT3B0aW9ucykpOwogCi0g
ICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZShBZG9wdENGLCBDVFR5cGVzZXR0ZXJDcmVhdGVM
aW5lKHR5cGVzZXR0ZXIuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIDApKSk7CisgICAgICAgIGxpbmUu
YWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVMaW5lKHR5cGVzZXR0ZXIuZ2V0KCksIENGUmFuZ2VN
YWtlKDAsIDApKSk7CisgICAgfSBlbHNlCisgICAgICAgIGxpbmUuYWRvcHRDRihDVExpbmVDcmVh
dGVXaXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAKICAgICBD
RkFycmF5UmVmIHJ1bkFycmF5ID0gQ1RMaW5lR2V0R2x5cGhSdW5zKGxpbmUuZ2V0KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63364</attachid>
            <date>2010-08-03 12:03:40 -0700</date>
            <delta_ts>2010-08-05 04:54:59 -0700</delta_ts>
            <desc>Changes per review.</desc>
            <filename>patch43436-2.txt</filename>
            <type>text/plain</type>
            <size>6617</size>
            <attacher name="Ned Holbrook">ned</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMDMgIE5lZCBIb2xicm9vayAgPG5ob2xicm9va0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
fjUlIGNvbXBsZXggbGF5b3V0IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0MzYKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6
Q29tcGxleFRleHRSdW4pOiBVc2UgVmVjdG9yIHJhdGhlciB0aGFuIENGTXV0YWJsZURhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpj
cmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQ29yZVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJh
Y3RlcnNDb3JlVGV4dCk6IEF2b2lkIHR5cGVzZXR0ZXIgYWxsb2NhdGlvbiB1bmxlc3MgdXNpbmcg
dHlwZXNldHRlciBvcHRpb25zLgorCiAyMDEwLTA4LTAzICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJv
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDYzNzgxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3N0cmluZ0xvY2F0aW9u
OwogICAgICAgICBzaXplX3QgbV9zdHJpbmdMZW5ndGg7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fY29yZVRleHRJbmRpY2VzRGF0YTsK
KyAgICAgICAgVmVjdG9yPENGSW5kZXgsIDY0PiBtX2NvcmVUZXh0SW5kaWNlc1ZlY3RvcjsKICAg
ICAgICAgY29uc3QgQ0ZJbmRleCogbV9jb3JlVGV4dEluZGljZXM7CiAjZW5kaWYKICNpZiBVU0Uo
QVRTVUkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCShyZXZpc2lvbiA2Mzc4
MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDkgQEAgQ29tcGxleFRl
eHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6QwogICAgIG1fZ2x5cGhDb3VudCA9IENUUnVu
R2V0R2x5cGhDb3VudChtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBtX2NvcmVUZXh0SW5kaWNl
cyA9IENUUnVuR2V0U3RyaW5nSW5kaWNlc1B0cihtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBp
ZiAoIW1fY29yZVRleHRJbmRpY2VzKSB7Ci0gICAgICAgIG1fY29yZVRleHRJbmRpY2VzRGF0YS5h
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9nbHlwaENv
dW50ICogc2l6ZW9mKENGSW5kZXgpKSk7Ci0gICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1f
Y29yZVRleHRJbmRpY2VzRGF0YS5nZXQoKSwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgp
KTsKLSAgICAgICAgbV9jb3JlVGV4dEluZGljZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IENG
SW5kZXgqPihDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0
KCkpKTsKLSAgICAgICAgQ1RSdW5HZXRTdHJpbmdJbmRpY2VzKG1fY29yZVRleHRSdW4uZ2V0KCks
IENGUmFuZ2VNYWtlKDAsIDApLCBjb25zdF9jYXN0PENGSW5kZXgqPihtX2NvcmVUZXh0SW5kaWNl
cykpOworICAgICAgICBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5ncm93KG1fZ2x5cGhDb3VudCk7
CisgICAgICAgIENUUnVuR2V0U3RyaW5nSW5kaWNlcyhtX2NvcmVUZXh0UnVuLmdldCgpLCBDRlJh
bmdlTWFrZSgwLCAwKSwgbV9jb3JlVGV4dEluZGljZXNWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAg
bV9jb3JlVGV4dEluZGljZXMgPSBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5kYXRhKCk7CiAgICAg
fQogCiAgICAgbV9nbHlwaHMgPSBDVFJ1bkdldEdseXBoc1B0cihtX2NvcmVUZXh0UnVuLmdldCgp
KTsKQEAgLTcwLDE3ICs2OSwxNiBAQCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0
UnVuOjpDCiAgICAgICAgIENUUnVuR2V0QWR2YW5jZXMobV9jb3JlVGV4dFJ1bi5nZXQoKSwgQ0ZS
YW5nZU1ha2UoMCwgMCksIG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgbV9hZHZh
bmNlcyA9IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpOwogICAgIH0KLQogfQogCiAvLyBNaXNzaW5n
IGdseXBocyBydW4gY29uc3RydWN0b3IuIENvcmUgVGV4dCB3aWxsIG5vdCBnZW5lcmF0ZSBhIHJ1
biBvZiBtaXNzaW5nIGdseXBocywgaW5zdGVhZCBmYWxsaW5nIGJhY2sgb24KIC8vIGdseXBocyBm
cm9tIExhc3RSZXNvcnQuIFdlIHdhbnQgdG8gdXNlIHRoZSBwcmltYXJ5IGZvbnQncyBtaXNzaW5n
IGdseXBoIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBmYXN0IHRleHQgY29kZSBwYXRoLgogdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZv
bnREYXRhQ29yZVRleHQoYm9vbCBsdHIpCiB7Ci0gICAgVmVjdG9yPENGSW5kZXgsIDE2PiBpbmRp
Y2VzOworICAgIG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9zdHJpbmdMZW5ndGgpOwogICAgIHVuc2lnbmVkIHIgPSAwOwogICAgIHdoaWxlIChyIDwgbV9z
dHJpbmdMZW5ndGgpIHsKLSAgICAgICAgaW5kaWNlcy5hcHBlbmQocik7CisgICAgICAgIG1fY29y
ZVRleHRJbmRpY2VzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChyKTsKICAgICAgICAgaWYgKFVfSVNf
U1VSUk9HQVRFKG1fY2hhcmFjdGVyc1tyXSkpIHsKICAgICAgICAgICAgIEFTU0VSVChyICsgMSA8
IG1fc3RyaW5nTGVuZ3RoKTsKICAgICAgICAgICAgIEFTU0VSVChVX0lTX1NVUlJPR0FURV9MRUFE
KG1fY2hhcmFjdGVyc1tyXSkpOwpAQCAtODksMTQgKzg3LDEyIEBAIHZvaWQgQ29tcGxleFRleHRD
b250cm9sbGVyOjpDb21wbGV4VGV4dFIKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByKys7
CiAgICAgfQotICAgIG1fZ2x5cGhDb3VudCA9IGluZGljZXMuc2l6ZSgpOworICAgIG1fZ2x5cGhD
b3VudCA9IG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLnNpemUoKTsKICAgICBpZiAoIWx0cikgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIHIgPSAwLCBlbmQgPSBtX2dseXBoQ291bnQgLSAxOyByIDwg
bV9nbHlwaENvdW50IC8gMjsgKytyLCAtLWVuZCkKLSAgICAgICAgICAgIHN0ZDo6c3dhcChpbmRp
Y2VzW3JdLCBpbmRpY2VzW2VuZF0pOworICAgICAgICAgICAgc3RkOjpzd2FwKG1fY29yZVRleHRJ
bmRpY2VzVmVjdG9yW3JdLCBtX2NvcmVUZXh0SW5kaWNlc1ZlY3RvcltlbmRdKTsKICAgICB9Ci0g
ICAgbV9jb3JlVGV4dEluZGljZXNEYXRhLmFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX2dseXBoQ291bnQgKiBzaXplb2YoQ0ZJbmRleCkpKTsKLSAgICBD
RkRhdGFBcHBlbmRCeXRlcyhtX2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihpbmRpY2VzLmRhdGEoKSksIG1fZ2x5cGhDb3VudCAqIHNpemVv
ZihDRkluZGV4KSk7Ci0gICAgbV9jb3JlVGV4dEluZGljZXMgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IENGSW5kZXgqPihDRkRhdGFHZXRCeXRlUHRyKG1fY29yZVRleHRJbmRpY2VzRGF0YS5nZXQo
KSkpOworICAgIG1fY29yZVRleHRJbmRpY2VzID0gbV9jb3JlVGV4dEluZGljZXNWZWN0b3IuZGF0
YSgpOwogCiAgICAgLy8gU3ludGhlc2l6ZSBhIHJ1biBvZiBtaXNzaW5nIGdseXBocy4KICAgICBt
X2dseXBoc1ZlY3Rvci5maWxsKDAsIG1fZ2x5cGhDb3VudCk7CkBAIC0xMjAsNyArMTE2LDcgQEAg
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbAogCiAgICAgUmV0YWluUHRy
PENGQXR0cmlidXRlZFN0cmluZ1JlZj4gYXR0cmlidXRlZFN0cmluZyhBZG9wdENGLCBDRkF0dHJp
YnV0ZWRTdHJpbmdDcmVhdGUoTlVMTCwgc3RyaW5nLmdldCgpLCBmb250RGF0YS0+Z2V0Q0ZTdHJp
bmdBdHRyaWJ1dGVzKG1fZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVzKCkpKSk7CiAKLSAgICBSZXRh
aW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVyOworICAgIFJldGFpblB0cjxDVExpbmVS
ZWY+IGxpbmU7CiAKICAgICBpZiAoIW1fbWF5VXNlTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24gfHwg
bV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lk
KiBvcHRpb25LZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZl
bCB9OwpAQCAtMTMwLDExICsxMjYsMTEgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNv
bGxlY3RDb21wbAogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogcnRsT3B0aW9uVmFsdWVzW10g
PSB7IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlw
ZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07CiAgICAgICAgIHN0YXRpYyBDRkRp
Y3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBzaXplb2Yob3B0
aW9uS2V5cykgLyBzaXplb2YoKm9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKICAgICAgICAg
c3RhdGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1ZXMs
IHNpemVvZihvcHRpb25LZXlzKSAvIHNpemVvZigqb3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5n
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OwotICAgICAgICB0eXBlc2V0dGVyLmFkb3B0Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aEF0dHJp
YnV0ZWRTdHJpbmdBbmRPcHRpb25zKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIG1fcnVuLmx0cigp
ID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVyT3B0aW9ucykpOwotICAgIH0g
ZWxzZQotICAgICAgICB0eXBlc2V0dGVyLmFkb3B0Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgICAgICBSZXRhaW5Q
dHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVyKEFkb3B0Q0YsIENUVHlwZXNldHRlckNyZWF0
ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nQW5kT3B0aW9ucyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBt
X3J1bi5sdHIoKSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zIDogcnRsVHlwZXNldHRlck9wdGlvbnMp
KTsKIAotICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUoQWRvcHRDRiwgQ1RUeXBlc2V0dGVy
Q3JlYXRlTGluZSh0eXBlc2V0dGVyLmdldCgpLCBDRlJhbmdlTWFrZSgwLCAwKSkpOworICAgICAg
ICBsaW5lLmFkb3B0Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlTGluZSh0eXBlc2V0dGVyLmdldCgpLCBD
RlJhbmdlTWFrZSgwLCAwKSkpOworICAgIH0gZWxzZQorICAgICAgICBsaW5lLmFkb3B0Q0YoQ1RM
aW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwog
CiAgICAgQ0ZBcnJheVJlZiBydW5BcnJheSA9IENUTGluZUdldEdseXBoUnVucyhsaW5lLmdldCgp
KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>