<?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>31288</bug_id>
          
          <creation_ts>2009-11-10 00:57:40 -0800</creation_ts>
          <short_desc>Add a function to show render tree for debugging</short_desc>
          <delta_ts>2009-12-07 21:30:48 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161976</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-10 00:57:40 -0800</bug_when>
    <thetext>RenderObject::showTree only dumps DOM tree and we cannot see anonymous render nodes. WebCore::externalRepresentation dumps a render tree. But it has two issues: 1. it calls RenderObject::layout() as a side effect. This may cause crash in some contexts and 2. it returns the tree as a String instead of outputting to stderr, which isn&apos;t so convenient.

So, it would be OK to add another function to dump the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161977</commentid>
    <comment_count>1</comment_count>
      <attachid>42851</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-10 00:59:49 -0800</bug_when>
    <thetext>Created attachment 42851
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161980</commentid>
    <comment_count>2</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-10 01:01:53 -0800</bug_when>
    <thetext>Here is the sample output of this function. Any comments will be appreciated.

(gdb) p showRenderTree(this, this-&gt;parent())
RenderView 0xe4cf1c                     #document       0x8872600
  RenderBlock 0xe4d46c                  HTML    0xe4b660
    RenderBody 0xeb797c                 BODY    0xeb7460
      RenderBlock 0xeb9e6c              P       0xeb7a00
        RenderText 0xeb9efc             #text   0xebc410 &quot;This is the WebKit version of &quot;
        RenderInline 0xebc69c           A       0xeba060
          RenderText 0xebc77c           #text   0xeba120 &quot;CSS 2.1 Test Suite: dynamic changes to &apos;counter-increment&apos;&quot;
        RenderText 0xebc7fc             #text   0xebc7c0 &quot;.&quot;
      RenderBlock 0xebc9ac              DIV     0xebc900
        RenderBlock 0xebcbdc            P       0xebca60
          RenderText 0xebccec           #text   0xebcb00 &quot;The following two lines should be the same:&quot;
        RenderBlock 0xebb7bc            DIV     0xebcde0
          RenderInline 0xebbabc         SPAN    0xebb8e0 CLASS=increment
-           RenderInline (generated) 0xebbcec
*             RenderCounter 0xebbc8c
              RenderText 0xebbd3c
          RenderInline 0xebbffc         SPAN    0xebbe20 CLASS=increment
            RenderInline (generated) 0xebc0bc
              RenderCounter 0xebcf7c
              RenderText 0xebcfdc
          RenderInline 0xebd29c         SPAN    0xebd0c0 CLASS=increment
            RenderInline (generated) 0xebd45c
              RenderCounter 0xebd3fc
              RenderText 0xebd4ac
        RenderBlock 0xebd64c            DIV     0xebd5a0
          RenderText 0xebd72c           #text   0xebd570 &quot;1-2-new-3-4-&quot;
      RenderBlock 0xebd93c              DIV     0xebd890
        RenderInline 0xe1e1fc           SPAN    0xec1850
          RenderText 0xe672dc           #text   0xec4230 &quot;Before the dynamic change:&quot;
          RenderBR 0xe98d7c             BR      0xec4260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167100</commentid>
    <comment_count>3</comment_count>
      <attachid>42851</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 13:20:17 -0800</bug_when>
    <thetext>Comment on attachment 42851
Patch v1

I&apos;m not sure what &quot;outputted&quot; is supposed to mean.  I guess it&apos;s printedCharacters?  Can it just default to 0, with = 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167198</commentid>
    <comment_count>4</comment_count>
      <attachid>44009</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-30 00:35:01 -0800</bug_when>
    <thetext>Created attachment 44009
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167199</commentid>
    <comment_count>5</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-30 00:42:02 -0800</bug_when>
    <thetext>Thanks for the review! I really want to use this function for my debugging.

&gt; I&apos;m not sure what &quot;outputted&quot; is supposed to mean.  I guess it&apos;s
&gt; printedCharacters?

Yes, and thanks for the comment, printedCharacters is definitely better naming. I changed the name.

&gt; Can it just default to 0, with = 0?

Unfortunately, gdb cannot handle default parameters. If we make it a default parameter, we always need to pass 0 for RenderObject::showRenderObject when debugging with GDB. That&apos;s why I created two overloaded functions.

Also, I&apos;ve noticed we may call showRenderObject() for a NULL RenderObject while we are debugging. I added NULL checks for this pointers. This looks a bit weird to check if this pointer is NULL. If you don&apos;t like this, I may make showRenderObject a global function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167384</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:49:56 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44009 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169361</commentid>
    <comment_count>7</comment_count>
      <attachid>44009</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-07 10:30:16 -0800</bug_when>
    <thetext>Comment on attachment 44009
Patch v2

&gt; +    for (const WebCore::RenderObject* child = firstChild(); child; child = child-&gt;nextSibling())

I don&apos;t think the WebCore prefix is needed here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169600</commentid>
    <comment_count>8</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-07 21:30:23 -0800</bug_when>
    <thetext>&gt; I don&apos;t think the WebCore prefix is needed here.

Fixed and landed, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42851</attachid>
            <date>2009-11-10 00:59:49 -0800</date>
            <delta_ts>2009-11-30 00:34:55 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-31288-20091110175947.patch</filename>
            <type>text/plain</type>
            <size>4108</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjQ0MGU4MC4uNWRkNzhmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0xMS0xMCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIHNob3cgcmVuZGVyIHRyZWUg
Zm9yIGRlYnVnZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzEyODgKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGp1c3QgYWRk
cyBhIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJUcmVlQW5k
TWFyayk6CisgICAgICAgIChzaG93UmVuZGVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorCiAyMDA5LTExLTA5ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCAzZGM1NjVjLi4yZTZiNWMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTEzMzUsNiArMTMzNSw0MSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hvd1Ry
ZWVGb3JUaGlzKCkgY29uc3QKICAgICAgICAgbm9kZSgpLT5zaG93VHJlZUZvclRoaXMoKTsKIH0K
IAordm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmplY3QoKSBjb25zdAoreworICAgIHNo
b3dSZW5kZXJPYmplY3QoMCk7Cit9CisKK3ZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyT2Jq
ZWN0KGludCBvdXRwdXR0ZWQpIGNvbnN0Cit7CisgICAgb3V0cHV0dGVkICs9IGZwcmludGYoc3Rk
ZXJyLCAiJXMgJXAiLCByZW5kZXJOYW1lKCksIHRoaXMpOworCisgICAgaWYgKG5vZGUoKSkgewor
ICAgICAgICBpZiAob3V0cHV0dGVkKQorICAgICAgICAgICAgZm9yICg7IG91dHB1dHRlZCA8IDM5
OyBvdXRwdXR0ZWQrKykKKyAgICAgICAgICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7CisgICAg
ICAgIGZwdXRjKCdcdCcsIHN0ZGVycik7CisgICAgICAgIG5vZGUoKS0+c2hvd05vZGUoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKK30KKwordm9pZCBSZW5kZXJP
YmplY3Q6OnNob3dSZW5kZXJUcmVlQW5kTWFyayhjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9i
amVjdDEsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMSwgY29uc3QgUmVuZGVyT2JqZWN0KiBtYXJr
ZWRPYmplY3QyLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDIsIGludCBkZXB0aCkgY29uc3QKK3sK
KyAgICBpbnQgb3V0cHV0dGVkID0gMDsKKyAgICBpZiAobWFya2VkT2JqZWN0MSA9PSB0aGlzICYm
IG1hcmtlZExhYmVsMSkKKyAgICAgICAgb3V0cHV0dGVkICs9IGZwcmludGYoc3RkZXJyLCAiJXMi
LCBtYXJrZWRMYWJlbDEpOworICAgIGlmIChtYXJrZWRPYmplY3QyID09IHRoaXMgJiYgbWFya2Vk
TGFiZWwyKQorICAgICAgICBvdXRwdXR0ZWQgKz0gZnByaW50ZihzdGRlcnIsICIlcyIsIG1hcmtl
ZExhYmVsMik7CisgICAgZm9yICg7IG91dHB1dHRlZCA8IGRlcHRoICogMjsgb3V0cHV0dGVkKysp
CisgICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKKworICAgIHNob3dSZW5kZXJPYmplY3Qob3V0
cHV0dGVkKTsKKworICAgIGZvciAoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAg
ICAgIGNoaWxkLT5zaG93UmVuZGVyVHJlZUFuZE1hcmsobWFya2VkT2JqZWN0MSwgbWFya2VkTGFi
ZWwxLCBtYXJrZWRPYmplY3QyLCBtYXJrZWRMYWJlbDIsIGRlcHRoICsgMSk7Cit9CisKICNlbmRp
ZiAvLyBOREVCVUcKIAogQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdApAQCAtMjQ3MCw0ICsyNTA1LDE5IEBAIHZvaWQgc2hvd1RyZWUoY29uc3QgV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0KiBybykKICAgICAgICAgcm8tPnNob3dUcmVlRm9yVGhpcygpOwog
fQogCit2b2lkIHNob3dSZW5kZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogb2Jq
ZWN0MSkKK3sKKyAgICBzaG93UmVuZGVyVHJlZShvYmplY3QxLCAwKTsKK30KKwordm9pZCBzaG93
UmVuZGVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIG9iamVjdDEsIGNvbnN0IFdl
YkNvcmU6OlJlbmRlck9iamVjdCogb2JqZWN0MikKK3sKKyAgICBpZiAob2JqZWN0MSkgeworICAg
ICAgICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJvb3QgPSBvYmplY3QxOworICAgICAg
ICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCisgICAgICAgICAgICByb290ID0gcm9vdC0+cGFyZW50
KCk7CisgICAgICAgIHJvb3QtPnNob3dSZW5kZXJUcmVlQW5kTWFyayhvYmplY3QxLCAiKiIsIG9i
amVjdDIsICItIiwgMCk7CisgICAgfQorfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggYWNmZGQ0OS4uNzhlYzRiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAg
LTIyOSw2ICsyMjksMTIgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAg
dm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKKworICAgIHZvaWQgc2hvd1JlbmRlck9iamVj
dCgpIGNvbnN0OworICAgIC8vIFdlIGRvbid0IG1ha2Ugb3V0cHV0dGVkIGFuIG9wdGlvbmFsIHBh
cmFtZXRlciBzbyB0aGF0CisgICAgLy8gc2hvd1JlbmRlck9iamVjdCBjYW4gYmUgY2FsbGVkIGZy
b20gZ2RiIGVhc2lseS4KKyAgICB2b2lkIHNob3dSZW5kZXJPYmplY3QoaW50IG91dHB1dHRlZCkg
Y29uc3Q7CisgICAgdm9pZCBzaG93UmVuZGVyVHJlZUFuZE1hcmsoY29uc3QgUmVuZGVyT2JqZWN0
KiBtYXJrZWRPYmplY3QxID0gMCwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxID0gMCwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBtYXJrZWRPYmplY3QyID0gMCwgY29uc3QgY2hhciogbWFya2VkTGFiZWwy
ID0gMCwgaW50IGRlcHRoID0gMCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBSZW5kZXJP
YmplY3QqIGNyZWF0ZU9iamVjdChOb2RlKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTEwMzMsNiArMTAz
OSwxMCBAQCBpbmxpbmUgdm9pZCBhZGp1c3RGbG9hdFF1YWRGb3JBYnNvbHV0ZVpvb20oRmxvYXRR
dWFkJiBxdWFkLCBSZW5kZXJPYmplY3QqIHJlbmRlcgogI2lmbmRlZiBOREVCVUcKIC8vIE91dHNp
ZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSBnZGIu
CiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCopOwordm9pZCBzaG93
UmVuZGVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIG9iamVjdDEpOworLy8gV2Ug
ZG9uJ3QgbWFrZSBvYmplY3QyIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBzbyB0aGF0IHNob3dSZW5k
ZXJUcmVlCisvLyBjYW4gYmUgY2FsbGVkIGZyb20gZ2RiIGVhc2lseS4KK3ZvaWQgc2hvd1JlbmRl
clRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBvYmplY3QxLCBjb25zdCBXZWJDb3Jl
OjpSZW5kZXJPYmplY3QqIG9iamVjdDIpOwogI2VuZGlmCiAKICNlbmRpZiAvLyBSZW5kZXJPYmpl
Y3RfaA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44009</attachid>
            <date>2009-11-30 00:35:01 -0800</date>
            <delta_ts>2009-12-07 10:30:15 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-31288-20091130173459.patch</filename>
            <type>text/plain</type>
            <size>4416</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODU2MWIyMC4uZjZkM2UxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0xMS0yOSAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIHNob3cgcmVuZGVyIHRyZWUg
Zm9yIGRlYnVnZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzEyODgKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGp1c3QgYWRk
cyBhIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJUcmVlQW5k
TWFyayk6CisgICAgICAgIChzaG93UmVuZGVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorCiAyMDA5LTExLTI5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCAxZThlMTlmLi41ZjhkM2I3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTEzMzUsNiArMTMzNSw1MCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hvd1RyZWVGb3JUaGlz
KCkgY29uc3QKICAgICAgICAgbm9kZSgpLT5zaG93VHJlZUZvclRoaXMoKTsKIH0KIAordm9pZCBS
ZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmplY3QoKSBjb25zdAoreworICAgIHNob3dSZW5kZXJP
YmplY3QoMCk7Cit9CisKK3ZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyT2JqZWN0KGludCBw
cmludGVkQ2hhcmFjdGVycykgY29uc3QKK3sKKyAgICAvLyBBcyB0aGlzIGZ1bmN0aW9uIGlzIGlu
dGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1Z2dpbmcsIHRoZQorICAgIC8vIHRoaXMgcG9pbnRl
ciBtYXkgYmUgMC4KKyAgICBpZiAoIXRoaXMpIHsKKyAgICAgICAgZnB1dHMoIihudWxsKVxuIiwg
c3RkZXJyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByaW50ZWRDaGFyYWN0ZXJz
ICs9IGZwcmludGYoc3RkZXJyLCAiJXMgJXAiLCByZW5kZXJOYW1lKCksIHRoaXMpOworCisgICAg
aWYgKG5vZGUoKSkgeworICAgICAgICBpZiAocHJpbnRlZENoYXJhY3RlcnMpCisgICAgICAgICAg
ICBmb3IgKDsgcHJpbnRlZENoYXJhY3RlcnMgPCAzOTsgcHJpbnRlZENoYXJhY3RlcnMrKykKKyAg
ICAgICAgICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7CisgICAgICAgIGZwdXRjKCdcdCcsIHN0
ZGVycik7CisgICAgICAgIG5vZGUoKS0+c2hvd05vZGUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
ZnB1dGMoJ1xuJywgc3RkZXJyKTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJU
cmVlQW5kTWFyayhjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdDEsIGNvbnN0IGNoYXIq
IG1hcmtlZExhYmVsMSwgY29uc3QgUmVuZGVyT2JqZWN0KiBtYXJrZWRPYmplY3QyLCBjb25zdCBj
aGFyKiBtYXJrZWRMYWJlbDIsIGludCBkZXB0aCkgY29uc3QKK3sKKyAgICBpbnQgcHJpbnRlZENo
YXJhY3RlcnMgPSAwOworICAgIGlmIChtYXJrZWRPYmplY3QxID09IHRoaXMgJiYgbWFya2VkTGFi
ZWwxKQorICAgICAgICBwcmludGVkQ2hhcmFjdGVycyArPSBmcHJpbnRmKHN0ZGVyciwgIiVzIiwg
bWFya2VkTGFiZWwxKTsKKyAgICBpZiAobWFya2VkT2JqZWN0MiA9PSB0aGlzICYmIG1hcmtlZExh
YmVsMikKKyAgICAgICAgcHJpbnRlZENoYXJhY3RlcnMgKz0gZnByaW50ZihzdGRlcnIsICIlcyIs
IG1hcmtlZExhYmVsMik7CisgICAgZm9yICg7IHByaW50ZWRDaGFyYWN0ZXJzIDwgZGVwdGggKiAy
OyBwcmludGVkQ2hhcmFjdGVycysrKQorICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7CisKKyAg
ICBzaG93UmVuZGVyT2JqZWN0KHByaW50ZWRDaGFyYWN0ZXJzKTsKKyAgICBpZiAoIXRoaXMpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
CisgICAgICAgIGNoaWxkLT5zaG93UmVuZGVyVHJlZUFuZE1hcmsobWFya2VkT2JqZWN0MSwgbWFy
a2VkTGFiZWwxLCBtYXJrZWRPYmplY3QyLCBtYXJrZWRMYWJlbDIsIGRlcHRoICsgMSk7Cit9CisK
ICNlbmRpZiAvLyBOREVCVUcKIAogQ29sb3IgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdApAQCAtMjQ3MCw0ICsyNTE0LDE5IEBAIHZvaWQgc2hvd1RyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBybykKICAgICAgICAgcm8tPnNob3dUcmVlRm9yVGhp
cygpOwogfQogCit2b2lkIHNob3dSZW5kZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVj
dCogb2JqZWN0MSkKK3sKKyAgICBzaG93UmVuZGVyVHJlZShvYmplY3QxLCAwKTsKK30KKwordm9p
ZCBzaG93UmVuZGVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIG9iamVjdDEsIGNv
bnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogb2JqZWN0MikKK3sKKyAgICBpZiAob2JqZWN0MSkg
eworICAgICAgICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJvb3QgPSBvYmplY3QxOwor
ICAgICAgICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCisgICAgICAgICAgICByb290ID0gcm9vdC0+
cGFyZW50KCk7CisgICAgICAgIHJvb3QtPnNob3dSZW5kZXJUcmVlQW5kTWFyayhvYmplY3QxLCAi
KiIsIG9iamVjdDIsICItIiwgMCk7CisgICAgfQorfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggNjQ5YTJkZS4uZDQwYWU2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKQEAgLTIzMSw2ICsyMzEsMTIgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVH
CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKKworICAgIHZvaWQgc2hvd1JlbmRl
ck9iamVjdCgpIGNvbnN0OworICAgIC8vIFdlIGRvbid0IG1ha2UgcHJpbnRlZENoYXJhY3RlcnMg
YW4gb3B0aW9uYWwgcGFyYW1ldGVyIHNvIHRoYXQKKyAgICAvLyBzaG93UmVuZGVyT2JqZWN0IGNh
biBiZSBjYWxsZWQgZnJvbSBnZGIgZWFzaWx5LgorICAgIHZvaWQgc2hvd1JlbmRlck9iamVjdChp
bnQgcHJpbnRlZENoYXJhY3RlcnMpIGNvbnN0OworICAgIHZvaWQgc2hvd1JlbmRlclRyZWVBbmRN
YXJrKGNvbnN0IFJlbmRlck9iamVjdCogbWFya2VkT2JqZWN0MSA9IDAsIGNvbnN0IGNoYXIqIG1h
cmtlZExhYmVsMSA9IDAsIGNvbnN0IFJlbmRlck9iamVjdCogbWFya2VkT2JqZWN0MiA9IDAsIGNv
bnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDAsIGludCBkZXB0aCA9IDApIGNvbnN0OwogI2VuZGlm
CiAKICAgICBzdGF0aWMgUmVuZGVyT2JqZWN0KiBjcmVhdGVPYmplY3QoTm9kZSosIFJlbmRlclN0
eWxlKik7CkBAIC0xMDM2LDYgKzEwNDIsMTAgQEAgaW5saW5lIHZvaWQgYWRqdXN0RmxvYXRRdWFk
Rm9yQWJzb2x1dGVab29tKEZsb2F0UXVhZCYgcXVhZCwgUmVuZGVyT2JqZWN0KiByZW5kZXIKICNp
Zm5kZWYgTkRFQlVHCiAvLyBPdXRzaWRlIHRoZSBXZWJDb3JlIG5hbWVzcGFjZSBmb3IgZWFzZSBv
ZiBpbnZvY2F0aW9uIGZyb20gZ2RiLgogdm9pZCBzaG93VHJlZShjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqKTsKK3ZvaWQgc2hvd1JlbmRlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0KiBvYmplY3QxKTsKKy8vIFdlIGRvbid0IG1ha2Ugb2JqZWN0MiBhbiBvcHRpb25hbCBwYXJh
bWV0ZXIgc28gdGhhdCBzaG93UmVuZGVyVHJlZQorLy8gY2FuIGJlIGNhbGxlZCBmcm9tIGdkYiBl
YXNpbHkuCit2b2lkIHNob3dSZW5kZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCog
b2JqZWN0MSwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBvYmplY3QyKTsKICNlbmRpZgog
CiAjZW5kaWYgLy8gUmVuZGVyT2JqZWN0X2gK
</data>
<flag name="review"
          id="25774"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>