<?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>15528</bug_id>
          
          <creation_ts>2007-10-15 22:02:26 -0700</creation_ts>
          <short_desc>svg_dynamic_cast should be removed</short_desc>
          <delta_ts>2007-12-08 00:54:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58633</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-15 22:02:26 -0700</bug_when>
    <thetext>svg_dynamic_cast should be removed

svg_dynamic_cast is a hold-over crutch from the KSVG2 days where KSVG2 depended on dynamic_cast.  It&apos;s old-style code, which doesn&apos;t really fit with the current style for the rest of webkit.  We should remove this crutch and change over all the places in the code to just check node-&gt;isSVGElement() and static_cast themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63621</commentid>
    <comment_count>1</comment_count>
      <attachid>17780</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-07 13:16:19 -0800</bug_when>
    <thetext>Created attachment 17780
First attempt

The patch should be clear :) One use of svg_dynamic_cast was not needed at all. The spots that need extra attention are in SVGRootInlineBox.cpp and SVGAnimationElement.cpp.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63625</commentid>
    <comment_count>2</comment_count>
      <attachid>17780</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-07 13:55:48 -0800</bug_when>
    <thetext>Comment on attachment 17780
First attempt

 918                 if (node &amp;&amp; node-&gt;isSVGElement())
 919                     textContent = static_cast&lt;SVGTextContentElement*&gt;(node);

Why is isSVGElement() sufficient evidence that this is a SVGTextContentElement? What guarantees that?

 83             target = ownerDocument()-&gt;getElementById(SVGURIReference::getTarget(m_href));

Should just use document() here instead of ownerDocument(). ownerDocument() is a lsower was to do the same thing.

 85             target = parentNode();
8686             while (target) {
8787                 if (target-&gt;nodeType() != ELEMENT_NODE)
8888                     target = target-&gt;parentNode();
8989                 else
9090                     break;
9191             }

This code seems unneeded to me. What node has a parent that&apos;s not an element?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63627</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-07 14:06:40 -0800</bug_when>
    <thetext>Hi Darin,

(In reply to comment #2)
&gt; (From update of attachment 17780 [edit])
&gt;  918                 if (node &amp;&amp; node-&gt;isSVGElement())
&gt;  919                     textContent =
&gt; static_cast&lt;SVGTextContentElement*&gt;(node);
&gt; 
&gt; Why is isSVGElement() sufficient evidence that this is a SVGTextContentElement?
&gt; What guarantees that?

It is not. Just that the old code basically did the same thing, only with an extra assert and static_cast AFAICS.

&gt;  83             target =
&gt; ownerDocument()-&gt;getElementById(SVGURIReference::getTarget(m_href));
&gt; 
&gt; Should just use document() here instead of ownerDocument(). ownerDocument() is
&gt; a lsower was to do the same thing.

Ok, good to know, will fix.

&gt;  85             target = parentNode();
&gt; 8686             while (target) {
&gt; 8787                 if (target-&gt;nodeType() != ELEMENT_NODE)
&gt; 8888                     target = target-&gt;parentNode();
&gt; 8989                 else
&gt; 9090                     break;
&gt; 9191             }
&gt; 
&gt; This code seems unneeded to me. What node has a parent that&apos;s not an element?

Maybe a document(I didnt check so far)? I didnt want to change the existing code much, except that obvious SVGAnimationElement cleanup.

&gt; r=me

Thx! Will land after some sleep :)
Mfg,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63656</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-08 00:54:32 -0800</bug_when>
    <thetext>Landed in r28559.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17780</attachid>
            <date>2007-12-07 13:16:19 -0800</date>
            <delta_ts>2007-12-07 13:55:48 -0800</delta_ts>
            <desc>First attempt</desc>
            <filename>15528.diff</filename>
            <type>text/plain</type>
            <size>12493</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAyODUy
NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MTMsMTAgKzkxMywxMCBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmJ1aWxkTGF5
b3V0SW5mb3JtCiAgICAgICAgICAgICAgICAgaW5mby5zZXRJblBhdGhMYXlvdXQodHJ1ZSk7CiAK
ICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGV4dC1hbmNob3IvdGV4dExlbmd0aCBvbiBwYXRo
LCB3aGljaCBpcyBzcGVjaWFsLgotICAgICAgICAgICAgICAgIFNWR0VsZW1lbnQqIHRleHRFbGVt
ZW50ID0gc3ZnX2R5bmFtaWNfY2FzdChmbG93Qm94LT5vYmplY3QoKS0+ZWxlbWVudCgpKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQodGV4dEVsZW1lbnQpOwotCi0gICAgICAgICAgICAgICAgU1ZH
VGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudCA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250
ZW50RWxlbWVudCo+KHRleHRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBTVkdUZXh0Q29udGVu
dEVsZW1lbnQqIHRleHRDb250ZW50ID0gMDsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
Zmxvd0JveC0+b2JqZWN0KCktPmVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZSAm
JiBub2RlLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGV4dENvbnRlbnQg
PSBzdGF0aWNfY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQqPihub2RlKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQodGV4dENvbnRlbnQpOwogCiAgICAgICAgICAgICAgICAgRUxlbmd0aEFkanVz
dCBsZW5ndGhBZGp1c3QgPSAoRUxlbmd0aEFkanVzdCkgdGV4dENvbnRlbnQtPmxlbmd0aEFkanVz
dCgpOwpAQCAtMTMyOCwxMyArMTMyOCwxNCBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmJ1aWxk
VGV4dENodW5rcyhWCiAKICAgICAgICAgICAgIFJlbmRlclRleHQqIHRleHQgPSB0ZXh0Qm94LT50
ZXh0T2JqZWN0KCk7CiAgICAgICAgICAgICBBU1NFUlQodGV4dCk7Ci0KLSAgICAgICAgICAgIFNW
R0VsZW1lbnQqIHRleHRFbGVtZW50ID0gc3ZnX2R5bmFtaWNfY2FzdCh0ZXh0LT5lbGVtZW50KCkt
PnBhcmVudCgpKTsKICAgICAgICAgICAgIEFTU0VSVCh0ZXh0LT5lbGVtZW50KCkpOwogCi0gICAg
ICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQqIHRleHRDb250ZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHVGV4dENvbnRlbnRFbGVtZW50Kj4odGV4dEVsZW1lbnQpOworICAgICAgICAgICAgU1ZHVGV4
dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudCA9IDA7CisgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gdGV4dC0+ZWxlbWVudCgpLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIGlmIChub2RlICYmIG5v
ZGUtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHRleHRDb250ZW50ID0gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dENvbnRlbnRFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICBBU1NFUlQo
dGV4dENvbnRlbnQpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIFN0YXJ0IG5ldyBj
aGFyYWN0ZXIgcmFuZ2UgZm9yIHRoZSBmaXJzdCBjaHVuawogICAgICAgICAgICAgYm9vbCBpc0Zp
cnN0Q2hhcmFjdGVyID0gaW5mby5zdmdUZXh0Q2h1bmtzLmlzRW1wdHkoKSAmJiBpbmZvLmNodW5r
LnN0YXJ0ID09IGluZm8uaXQgJiYgaW5mby5jaHVuay5zdGFydCA9PSBpbmZvLmNodW5rLmVuZDsK
ICAgICAgICAgICAgIGlmIChpc0ZpcnN0Q2hhcmFjdGVyKSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMjEgKzc4LDIyIEBAIGJvb2wg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6aGFzVmFsaWRUYXJnZXQKIFNWR0VsZW1lbnQqIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OnRhcmdldEVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV90YXJnZXRF
bGVtZW50KSB7CisgICAgICAgIE5vZGUgKnRhcmdldCA9IDA7CiAgICAgICAgIGlmICghbV9ocmVm
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG93bmVyRG9jdW1l
bnQoKS0+Z2V0RWxlbWVudEJ5SWQoU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQobV9ocmVmKSk7
Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQgPSBzdmdfZHluYW1pY19jYXN0KGVsZW1lbnQp
OworICAgICAgICAgICAgdGFyZ2V0ID0gb3duZXJEb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChT
VkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChtX2hyZWYpKTsKICAgICAgICAgfSBlbHNlIGlmIChw
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IHBhcmVudE5vZGUoKTsK
KyAgICAgICAgICAgIHRhcmdldCA9IHBhcmVudE5vZGUoKTsKICAgICAgICAgICAgIHdoaWxlICh0
YXJnZXQpIHsKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5ub2RlVHlwZSgpICE9IEVMRU1F
TlRfTk9ERSkKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LT5wYXJlbnROb2Rl
KCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdGFyZ2V0RWxlbWVudCA9IHN2Z19keW5hbWljX2Nh
c3QodGFyZ2V0KTsKICAgICAgICAgfQorICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNT
VkdFbGVtZW50KCkpCisgICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdFbGVtZW50Kj4odGFyZ2V0KTsKICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKyAK
ICAgICByZXR1cm4gbV90YXJnZXRFbGVtZW50OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lv
biAyODUyNikKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0LDE0ICsyNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vZGUqIG1fc2hh
ZG93UGFyZW50OwogICAgIH07CiAKLSAgICBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnQqIHN2Z19k
eW5hbWljX2Nhc3QoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIFNWR0VsZW1lbnQqIHN2Z0Vs
ZW1lbnQgPSAwOwotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5pc1NWR0VsZW1lbnQoKSkKLSAg
ICAgICAgICAgIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obm9kZSk7Ci0g
ICAgICAgIHJldHVybiBzdmdFbGVtZW50OwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZSAKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50
SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5jcHAJKHJldmlzaW9uIDI4NTI2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw5IEBAIHZvaWQgU1ZHRWxlbWVudElu
c3RhbmNlOjp1cGRhdGVJbnN0YW5jZSgKIAogICAgIC8vIEZvciBhbGwgb3RoZXIgbm9kZXMgdGhp
cyBsb2dpYyBpcyBzdWZmaWNpZW50LgogICAgIFJlZlB0cjxOb2RlPiBjbG9uZSA9IG1fZWxlbWVu
dC0+Y2xvbmVOb2RlKHRydWUpOwotICAgIFNWR0VsZW1lbnQqIHN2Z0Nsb25lID0gc3ZnX2R5bmFt
aWNfY2FzdChjbG9uZS5nZXQoKSk7CisgICAgU1ZHRWxlbWVudCogc3ZnQ2xvbmUgPSAwOworICAg
IGlmIChjbG9uZSAmJiBjbG9uZS0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHN2Z0Nsb25lID0g
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNsb25lLmdldCgpKTsKICAgICBBU1NFUlQoc3ZnQ2xv
bmUpOwogCiAgICAgLy8gUmVwbGFjZSBub2RlIGluIHRoZSA8dXNlPiBzaGFkb3cgdHJlZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTI2KQorKysgV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsOSBA
QCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAgLy8gVE9ETyA6
IHVzZSBzd2l0Y2gvY2FzZSBpbnN0ZWFkPwogICAgIG1fZmlsdGVyLT5jbGVhckVmZmVjdHMoKTsK
ICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3Qo
bik7CisgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSAwOworICAgICAgICBpZiAobi0+aXNT
VkdFbGVtZW50KCkpCisgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KG4pOwogICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0ZpbHRlckVmZmVjdCgp
KSB7CiAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZp
bHRlckF0dHJpYnV0ZXMgPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMqPihlbGVtZW50KTsKICAgICAgICAgICAgIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0ID0gZmlsdGVyQXR0cmlidXRlcy0+ZmlsdGVyRWZmZWN0KG1fZmlsdGVyLmdldCgpKTsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MjYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NyArMTE5LDkgQEAgVmVjdG9yPFNWR0dyYWRpZW50U3RvcD4gU1ZHR3JhZGllbnRFbGVtZQogICAg
IC8vIEZJWE1FOiBNYW51YWwgc3R5bGUgcmVzb2x1dGlvbiBpcyBhIGhhY2sKICAgICBSZW5kZXJT
dHlsZSogZ3JhZGllbnRTdHlsZSA9IDA7CiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgp
OyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50
ID0gc3ZnX2R5bmFtaWNfY2FzdChuKTsKKyAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IDA7
CisgICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obik7CiAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1l
bnQtPmlzR3JhZGllbnRTdG9wKCkpIHsKICAgICAgICAgICAgIFNWR1N0b3BFbGVtZW50KiBzdG9w
ID0gc3RhdGljX2Nhc3Q8U1ZHU3RvcEVsZW1lbnQqPihlbGVtZW50KTsKICAgICAgICAgICAgIGZs
b2F0IHN0b3BPZmZzZXQgPSBzdG9wLT5vZmZzZXQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xv
Y2F0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAko
cmV2aXNpb24gMjg1MjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsOSArMTMxLDggQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6
Z2V0VHJhbnNmbwogewogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBnZXRDVE0oKTsKIAotICAg
IFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBzdmdfZHluYW1pY19jYXN0KHRhcmdldCk7Ci0g
ICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+aXNTdHlsZWRMb2NhdGFibGUo
KSkgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8U1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpLT5nZXRDVE0oKTsKKyAgICBp
ZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNTdHlsZWRMb2NhdGFibGUoKSkgeworICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudCo+KHRhcmdldCktPmdldENUTSgpOwogICAgICAgICBpZiAoIXRhcmdldENUTS5pc0ludmVy
dGlibGUoKSkgewogICAgICAgICAgICAgZWMgPSBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFOwog
ICAgICAgICAgICAgcmV0dXJuIGN0bTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlz
aW9uIDI4NTI2KQorKysgV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDkgQEAgYXV0b19wdHI8SW1hZ2VCdWZmZXI+IFNWR01hc2tFbGVt
ZW50OjpkcgogCiAgICAgLy8gUmVuZGVyIHN1YnRyZWUgaW50byBJbWFnZUJ1ZmZlcgogICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgU1ZHRWxlbWVudCogZWxlbSA9IHN2Z19keW5hbWljX2Nhc3Qobik7CisgICAgICAgIFNW
R0VsZW1lbnQqIGVsZW0gPSAwOworICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkpCisgICAg
ICAgICAgICBlbGVtID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG4pOwogICAgICAgICBpZiAo
IWVsZW0gfHwgIWVsZW0tPmlzU3R5bGVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTI2KQorKysgV2ViQ29yZS9z
dmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDExIEBA
IFNWR1N3aXRjaEVsZW1lbnQ6On5TVkdTd2l0Y2hFbGVtZW50KCkKIGJvb2wgU1ZHU3dpdGNoRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKIHsKICAg
ICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3Qobik7
Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzVmFsaWQoKSkKLSAgICAgICAgICAg
IHJldHVybiAobiA9PSBjaGlsZCk7IC8vIE9ubHkgYWxsb3cgdGhpcyBjaGlsZCBpZiBpdCdzIHRo
ZSBmaXJzdCB2YWxpZCBjaGlsZAorICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bik7CisgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIChuID09IGNoaWxkKTsgLy8gT25seSBhbGxvdyB0aGlzIGNoaWxk
IGlmIGl0J3MgdGhlIGZpcnN0IHZhbGlkIGNoaWxkCisgICAgICAgIH0KICAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1MjYpCisr
KyBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcg
KzI1OSw5IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UKIAogICAg
IFN0cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhyZWYoKSk7CiAgICAgRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IG93bmVyRG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQp
OyAKLSAgICBTVkdFbGVtZW50KiB0YXJnZXQgPSBzdmdfZHluYW1pY19jYXN0KHRhcmdldEVsZW1l
bnQpOworICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CisgICAgaWYgKHRhcmdldEVsZW1lbnQg
JiYgdGFyZ2V0RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHRhcmdldCA9IHN0YXRp
Y19jYXN0PFNWR0VsZW1lbnQqPih0YXJnZXRFbGVtZW50KTsKIAogICAgIC8vIERvIG5vdCBhbGxv
dyBzZWxmLXJlZmVyZW5jaW5nLgogICAgIC8vICd0YXJnZXQnIG1heSBiZSBudWxsLCBpZiBpdCdz
IGEgbm9uIFNWRyBuYW1lc3BhY2VkIGVsZW1lbnQuCkBAIC0zODgsNyArMzkwLDkgQEAgdm9pZCBT
VkdVc2VFbGVtZW50OjpidWlsZEluc3RhbmNlVHJlZShTVgogICAgIC8vIGl0cyBjb3JyZXNwb25k
aW5nRWxlbWVudCB0aGF0IGlzIGFuIFNWR1JlY3RFbGVtZW50IG9iamVjdC4KIAogICAgIGZvciAo
Tm9kZSogbm9kZSA9IHRhcmdldC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3ZnX2R5bmFtaWNf
Y2FzdChub2RlKTsKKyAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IDA7CisgICAgICAgIGlm
IChub2RlLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxTVkdFbGVtZW50Kj4obm9kZSk7CiAKICAgICAgICAgLy8gU2tpcCBhbnkgbm9uLXN2ZyBub2Rl
cyBvciBhbnkgZGlzYWxsb3dlZCBlbGVtZW50LgogICAgICAgICBpZiAoIWVsZW1lbnQgfHwgaXNE
aXNhbGxvd2VkRWxlbWVudChlbGVtZW50KSkKQEAgLTQyMCw3ICs0MjQsOSBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OmhhbmRsZURlZXBVc2VSZWZlcmVuCiB7CiAgICAgU3RyaW5nIGlkID0gU1ZHVVJJ
UmVmZXJlbmNlOjpnZXRUYXJnZXQodXNlLT5ocmVmKCkpOwogICAgIEVsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSBvd25lckRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCi0gICAgU1ZHRWxl
bWVudCogdGFyZ2V0ID0gc3ZnX2R5bmFtaWNfY2FzdCh0YXJnZXRFbGVtZW50KTsKKyAgICBTVkdF
bGVtZW50KiB0YXJnZXQgPSAwOworICAgIGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1l
bnQtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICB0YXJnZXQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4odGFyZ2V0RWxlbWVudCk7CiAKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDk4LDcgKzUwNCw5IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRTaGFkb3dUcmVl
KFNWR0UKICAgICBpZiAoc3VidHJlZUNvbnRhaW5zRGlzYWxsb3dlZEVsZW1lbnQobmV3Q2hpbGQu
Z2V0KCkpKQogICAgICAgICByZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZShuZXdD
aGlsZC5nZXQoKSk7CiAKLSAgICBTVkdFbGVtZW50KiBuZXdDaGlsZFB0ciA9IHN2Z19keW5hbWlj
X2Nhc3QobmV3Q2hpbGQuZ2V0KCkpOworICAgIFNWR0VsZW1lbnQqIG5ld0NoaWxkUHRyID0gMDsK
KyAgICBpZiAobmV3Q2hpbGQtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBuZXdDaGlsZFB0ciA9
IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuZXdDaGlsZC5nZXQoKSk7CiAgICAgQVNTRVJUKG5l
d0NoaWxkUHRyKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNTI1LDcgKzUzMyw5
IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblMKIAogICAgICAgICBT
dHJpbmcgaWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldCh1c2UtPmhyZWYoKSk7CiAgICAg
ICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBvd25lckRvY3VtZW50KCktPmdldEVsZW1lbnRC
eUlkKGlkKTsgCi0gICAgICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IHN2Z19keW5hbWljX2Nhc3Qo
dGFyZ2V0RWxlbWVudCk7CisgICAgICAgIFNWR0VsZW1lbnQqIHRhcmdldCA9IDA7CisgICAgICAg
IGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQorICAg
ICAgICAgICAgdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQp
OwogCiAgICAgICAgIC8vIERvbid0IEFTU0VSVCh0YXJnZXQpIGhlcmUsIGl0IG1heSBiZSAicGVu
ZGluZyIsIHRvby4KICAgICAgICAgaWYgKHRhcmdldCkgewpAQCAtNTczLDcgKzU4Myw5IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblMKICAgICAgICAgICAgIGlmIChz
dWJ0cmVlQ29udGFpbnNEaXNhbGxvd2VkRWxlbWVudChuZXdDaGlsZC5nZXQoKSkpCiAgICAgICAg
ICAgICAgICAgcmVtb3ZlRGlzYWxsb3dlZEVsZW1lbnRzRnJvbVN1YnRyZWUobmV3Q2hpbGQuZ2V0
KCkpOwogCi0gICAgICAgICAgICBTVkdFbGVtZW50KiBuZXdDaGlsZFB0ciA9IHN2Z19keW5hbWlj
X2Nhc3QobmV3Q2hpbGQuZ2V0KCkpOworICAgICAgICAgICAgU1ZHRWxlbWVudCogbmV3Q2hpbGRQ
dHIgPSAwOworICAgICAgICAgICAgaWYgKG5ld0NoaWxkLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAg
ICAgICAgICAgICBuZXdDaGlsZFB0ciA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuZXdDaGls
ZC5nZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3Q2hpbGRQdHIpOwogCiAgICAgICAgICAg
ICBjbG9uZVBhcmVudC0+YXBwZW5kQ2hpbGQobmV3Q2hpbGQucmVsZWFzZSgpLCBlYyk7CkBAIC02
OTgsNyArNzEwLDkgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojphc3NvY2lhdGVJbnN0YW5jZXNXaQog
ICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQodGFyZ2V0LT5ub2RlTmFtZSgpID09IG9yaWdpbmFs
RWxlbWVudC0+bm9kZU5hbWUoKSk7CiAKLSAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3ZnX2R5
bmFtaWNfY2FzdCh0YXJnZXQpOworICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSAwOworICAgIGlm
ICh0YXJnZXQtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHRWxlbWVudCo+KHRhcmdldCk7CiAKICAgICBBU1NFUlQoIXRhcmdldEluc3RhbmNlLT5zaGFk
b3dUcmVlRWxlbWVudCgpKTsKICAgICB0YXJnZXRJbnN0YW5jZS0+c2V0U2hhZG93VHJlZUVsZW1l
bnQoZWxlbWVudCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCShyZXZp
c2lvbiAyODUyNikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw5IEBAIFNWR1Jlc291cmNlKiBnZXRSZXNvdXJjZUJ5
SWQoRG9jdW1lbnQqIGQKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBFbGVtZW50KiBlbGVtZW50
ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICBTVkdFbGVtZW50KiBzdmdFbGVt
ZW50ID0gc3ZnX2R5bmFtaWNfY2FzdChlbGVtZW50KTsKKyAgICBTVkdFbGVtZW50KiBzdmdFbGVt
ZW50ID0gMDsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKKyAg
ICAgICAgc3ZnRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihlbGVtZW50KTsKIAog
ICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQtPmlzU3R5bGVkKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCktPmNhbnZhc1Jl
c291cmNlKCk7Cg==
</data>
<flag name="review"
          id="7661"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>