<?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>43405</bug_id>
          
          <creation_ts>2010-08-03 01:06:56 -0700</creation_ts>
          <short_desc>Extract a function that serializes nodes from the range version of createMarkup</short_desc>
          <delta_ts>2010-08-03 18:09:36 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259312</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 01:06:56 -0700</bug_when>
    <thetext>The range version of createMarkup currently does three things:
1. Disable &quot;delete button&quot; and adjust the starting node
2. Serialize nodes
3. Add style spans / divs to the serialized nodes to preserve styles.

As a result, createMarkup is large is a large function with plenty of local variables.
Because step 2 is straight forward operation, I propose to extract it as a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259314</commentid>
    <comment_count>1</comment_count>
      <attachid>63308</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 01:21:43 -0700</bug_when>
    <thetext>Created attachment 63308
extracted serializeNodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259558</commentid>
    <comment_count>2</comment_count>
      <attachid>63308</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-03 11:09:07 -0700</bug_when>
    <thetext>Comment on attachment 63308
extracted serializeNodes

&gt; Index: WebCore/editing/markup.cpp
&gt; ===================================================================
&gt; +static Node* serializeNodes(MarkupAccumulatorWrapper&amp; accumulator, Node* startNode, Node* pastEnd, Vector&lt;Node*&gt;* nodes, const Range* range, EAnnotateForInterchange annotate, EAbsoluteURLs absoluteURLs)

Nit: Can we make |startNode| or |pastEnd| const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259659</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 13:22:22 -0700</bug_when>
    <thetext>Thanks for the review ojan!

(In reply to comment #2)
&gt; (From update of attachment 63308 [details])
&gt; &gt; Index: WebCore/editing/markup.cpp
&gt; &gt; ===================================================================
&gt; &gt; +static Node* serializeNodes(MarkupAccumulatorWrapper&amp; accumulator, Node* startNode, Node* pastEnd, Vector&lt;Node*&gt;* nodes, const Range* range, EAnnotateForInterchange annotate, EAbsoluteURLs absoluteURLs)
&gt; 
&gt; Nit: Can we make |startNode| or |pastEnd| const?

Will fix and commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259669</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 13:38:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Nit: Can we make |startNode| or |pastEnd| const?
&gt; 
&gt; Will fix and commit.

As it turns out, this is not possible because startNode is assigned to n, which is passed to various functions which requires n to be non-const.  pastEnd is also assigned to next so we can&apos;t make pastEnd const either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259691</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-03 14:30:52 -0700</bug_when>
    <thetext>Generally speaking I don&apos;t think we should ever use const Node* -- it doesn&apos;t make sense to say that a node in a tree is &quot;const&quot;. What about the entire rest of the tree? Why is it OK for me to get a non-const pointer to my parent given a const pointer to myself. I think const has limited usefulness on DOM nodes and render tree nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259774</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 18:09:36 -0700</bug_when>
    <thetext>Committed r64609: &lt;http://trac.webkit.org/changeset/64609&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63308</attachid>
            <date>2010-08-03 01:21:43 -0700</date>
            <delta_ts>2010-08-03 11:09:07 -0700</delta_ts>
            <desc>extracted serializeNodes</desc>
            <filename>bug-43405-20100803012142.patch</filename>
            <type>text/plain</type>
            <size>9806</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDUzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0
cmFjdCBhIGZ1bmN0aW9uIHRoYXQgc2VyaWFsaXplcyBub2RlcyBmcm9tIHRoZSByYW5nZSB2ZXJz
aW9uIG9mIGNyZWF0ZU1hcmt1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDM0MDUKKworICAgICAgICBFeHRyYWN0ZWQgc2VyaWFsaXplTm9kZXMgdGhh
dCBzZXJpYWxpemVzIG5vZGVzIGZyb20gY3JlYXRlTWFya3VwLgorICAgICAgICBObyBuZXcgdGVz
dHMgYWRkZWQgc2luY2UgdGhpcyBpcyBhIGNsZWFuIHVwLgorCisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplTm9kZXMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IENhbGxzIHNlcmlhbGl6ZU5vZGVzLgorCiAy
MDEwLTA4LTAyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2
aXNpb24gNjQ0OTgpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODE4LDYgKzgxOCw4NCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3RN
YXJrdXBzOwogfTsKIAorc3RhdGljIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE1hcmt1cEFjY3VtdWxh
dG9yV3JhcHBlciYgYWNjdW11bGF0b3IsIE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2UgYW5ub3RhdGUsIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzKQoreworICAgIFZl
Y3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsKKyAgICBOb2RlKiBuZXh0OworICAgIE5vZGUq
IGxhc3RDbG9zZWQgPSAwOworICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0Tm9kZTsgbiAhPSBwYXN0
RW5kOyBuID0gbmV4dCkgeworICAgICAgICAvLyBBY2NvcmRpbmcgdG8gPHJkYXI6Ly9wcm9ibGVt
LzU3MzA2Njg+LCBpdCBpcyBwb3NzaWJsZSBmb3IgbiB0byBibG93CisgICAgICAgIC8vIHBhc3Qg
cGFzdEVuZCBhbmQgYmVjb21lIG51bGwgaGVyZS4gVGhpcyBzaG91bGRuJ3QgYmUgcG9zc2libGUu
CisgICAgICAgIC8vIFRoaXMgbnVsbCBjaGVjayB3aWxsIHByZXZlbnQgY3Jhc2hlcyAoYnV0IGNy
ZWF0ZSB0b28gbXVjaCBtYXJrdXApCisgICAgICAgIC8vIGFuZCB0aGUgQVNTRVJUIHdpbGwgaG9w
ZWZ1bGx5IGxlYWQgdXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxlbS4KKyAgICAgICAgQVNT
RVJUKG4pOworICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisg
ICAgICAgIG5leHQgPSBuLT50cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgIGJvb2wgb3BlbmVk
VGFnID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGlzQmxvY2sobikgJiYgY2FuSGF2ZUNoaWxkcmVu
Rm9yRWRpdGluZyhuKSAmJiBuZXh0ID09IHBhc3RFbmQpCisgICAgICAgICAgICAvLyBEb24ndCB3
cml0ZSBvdXQgZW1wdHkgYmxvY2sgY29udGFpbmVycyB0aGF0IGFyZW4ndCBmdWxseSBzZWxlY3Rl
ZC4KKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghbi0+cmVuZGVyZXIoKSAm
JiAhZW5jbG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24obiwgMCksIHNlbGVjdFRhZykpIHsKKyAg
ICAgICAgICAgIG5leHQgPSBuLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAv
LyBEb24ndCBza2lwIG92ZXIgcGFzdEVuZC4KKyAgICAgICAgICAgIGlmIChwYXN0RW5kICYmIHBh
c3RFbmQtPmlzRGVzY2VuZGFudE9mKG4pKQorICAgICAgICAgICAgICAgIG5leHQgPSBwYXN0RW5k
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBt
YXJrdXAgaWYgd2UncmUgbm90IHNraXBwaW5nIHRoZSBkZXNjZW5kYW50cworICAgICAgICAgICAg
YWNjdW11bGF0b3IuaW5zZXJ0T3BlblRhZyhuLCByYW5nZSwgYW5ub3RhdGUsIGFic29sdXRlVVJM
cyk7CisgICAgICAgICAgICBpZiAobm9kZXMpCisgICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVu
ZChuKTsKKworICAgICAgICAgICAgLy8gSWYgbm9kZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRo
ZSB0YWcgbm93LgorICAgICAgICAgICAgaWYgKCFuLT5jaGlsZE5vZGVDb3VudCgpKSB7CisgICAg
ICAgICAgICAgICAgYWNjdW11bGF0b3IuaW5zZXJ0RW5kVGFnKG4pOworICAgICAgICAgICAgICAg
IGxhc3RDbG9zZWQgPSBuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBv
cGVuZWRUYWcgPSB0cnVlOworICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UuYXBwZW5k
KG4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0
IGluc2VydCBvcGVuIHRhZyBhbmQgdGhlcmUncyBubyBtb3JlIHNpYmxpbmdzIG9yIHdlJ3JlIGF0
IHRoZSBlbmQgb2YgdGhlIHRyYXZlcnNhbCwgdGFrZSBjYXJlIG9mIGFuY2VzdG9ycy4KKyAgICAg
ICAgLy8gRklYTUU6IFdoYXQgaGFwcGVucyBpZiB3ZSBqdXN0IGluc2VydGVkIG9wZW4gdGFnIGFu
ZCByZWFjaGVkIHRoZSBlbmQ/CisgICAgICAgIGlmICghb3BlbmVkVGFnICYmICghbi0+bmV4dFNp
YmxpbmcoKSB8fCBuZXh0ID09IHBhc3RFbmQpKSB7CisgICAgICAgICAgICAvLyBDbG9zZSB1cCB0
aGUgYW5jZXN0b3JzLgorICAgICAgICAgICAgd2hpbGUgKCFhbmNlc3RvcnNUb0Nsb3NlLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9z
ZS5sYXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5p
c0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIC8vIE5vdCBhdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5jZXN0
b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4dCBub2RlLgorICAgICAgICAgICAgICAgIGFjY3VtdWxh
dG9yLmluc2VydEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9
IGFuY2VzdG9yOworICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdXJyb3VuZCB0aGUgY3VycmVudGx5
IGFjY3VtdWxhdGVkIG1hcmt1cCB3aXRoIG1hcmt1cCBmb3IgYW5jZXN0b3JzIHdlIG5ldmVyIG9w
ZW5lZCBhcyB3ZSBsZWF2ZSB0aGUgc3VidHJlZShzKSByb290ZWQgYXQgdGhvc2UgYW5jZXN0b3Jz
LgorICAgICAgICAgICAgTm9kZSogbmV4dFBhcmVudCA9IG5leHQgPyBuZXh0LT5wYXJlbnROb2Rl
KCkgOiAwOworICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuICE9IG5leHRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBsYXN0QW5jZXN0b3JDbG9zZWRPclNlbGYgPSBu
LT5pc0Rlc2NlbmRhbnRPZihsYXN0Q2xvc2VkKSA/IGxhc3RDbG9zZWQgOiBuOworICAgICAgICAg
ICAgICAgIGZvciAoTm9kZSAqcGFyZW50ID0gbGFzdEFuY2VzdG9yQ2xvc2VkT3JTZWxmLT5wYXJl
bnQoKTsgcGFyZW50ICYmIHBhcmVudCAhPSBuZXh0UGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE5vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBBbGwgYW5jZXN0b3JzIHRoYXQg
YXJlbid0IGluIHRoZSBhbmNlc3RvcnNUb0Nsb3NlIGxpc3Qgc2hvdWxkIGVpdGhlciBiZSBhKSB1
bnJlbmRlcmVkOgorICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAv
LyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUt
b3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50KSk7CisgICAgICAgICAg
ICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoTm9kZShwYXJlbnQsIHJhbmdlLCBhbm5vdGF0
ZSwgYWJzb2x1dGVVUkxzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVuZChwYXJlbnQpOworICAgICAgICAgICAgICAg
ICAgICBsYXN0Q2xvc2VkID0gcGFyZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsYXN0Q2xvc2VkOworfQorCiAvLyBG
SVhNRTogU2hvdWxkbid0IHdlIG9taXQgc3R5bGUgaW5mbyB3aGVuIGFubm90YXRlID09IERvTm90
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZT8gCiAvLyBGSVhNRTogQXQgbGVhc3QsIGFubm90YXRpb24g
YW5kIHN0eWxlIGluZm8gc2hvdWxkIHByb2JhYmx5IG5vdCBiZSBpbmNsdWRlZCBpbiByYW5nZS5t
YXJrdXBTdHJpbmcoKQogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZl
Y3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgYm9v
bCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBFQWJzb2x1dGVVUkxzIGFic29sdXRlVVJMcykKQEAg
LTg1Niw5ICs5MzQsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwg
CiAKICAgICBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIgYWNjdW11bGF0b3I7CiAgICAgTm9kZSog
cGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFzdExhc3ROb2RlKCk7Ci0gICAgTm9kZSogbGFzdENs
b3NlZCA9IDA7Ci0gICAgVmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNUb0Nsb3NlOwotICAgIAorCiAg
ICAgTm9kZSogc3RhcnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0KHVwZGF0ZWRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBW
UF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCh1cGRh
dGVkUmFuZ2UtPmVuZFBvc2l0aW9uKCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOwpAQCAtODc5LDg0
ICs5NTUsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBOb2RlKiBuZXh0OwotICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0
Tm9kZTsgbiAhPSBwYXN0RW5kOyBuID0gbmV4dCkgewotICAgICAgICAvLyBBY2NvcmRpbmcgdG8g
PHJkYXI6Ly9wcm9ibGVtLzU3MzA2Njg+LCBpdCBpcyBwb3NzaWJsZSBmb3IgbiB0byBibG93Ci0g
ICAgICAgIC8vIHBhc3QgcGFzdEVuZCBhbmQgYmVjb21lIG51bGwgaGVyZS4gVGhpcyBzaG91bGRu
J3QgYmUgcG9zc2libGUuCi0gICAgICAgIC8vIFRoaXMgbnVsbCBjaGVjayB3aWxsIHByZXZlbnQg
Y3Jhc2hlcyAoYnV0IGNyZWF0ZSB0b28gbXVjaCBtYXJrdXApCi0gICAgICAgIC8vIGFuZCB0aGUg
QVNTRVJUIHdpbGwgaG9wZWZ1bGx5IGxlYWQgdXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxl
bS4KLSAgICAgICAgQVNTRVJUKG4pOwotICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICBicmVh
azsKLSAgICAKLSAgICAgICAgbmV4dCA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKTsKLSAgICAgICAg
Ym9vbCBza2lwRGVzY2VuZGFudHMgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBhZGRNYXJrdXBGb3JO
b2RlID0gdHJ1ZTsKLSAgICAgICAgCi0gICAgICAgIGlmICghbi0+cmVuZGVyZXIoKSAmJiAhZW5j
bG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24obiwgMCksIHNlbGVjdFRhZykpIHsKLSAgICAgICAg
ICAgIHNraXBEZXNjZW5kYW50cyA9IHRydWU7Ci0gICAgICAgICAgICBhZGRNYXJrdXBGb3JOb2Rl
ID0gZmFsc2U7Ci0gICAgICAgICAgICBuZXh0ID0gbi0+dHJhdmVyc2VOZXh0U2libGluZygpOwot
ICAgICAgICAgICAgLy8gRG9uJ3Qgc2tpcCBvdmVyIHBhc3RFbmQuCi0gICAgICAgICAgICBpZiAo
cGFzdEVuZCAmJiBwYXN0RW5kLT5pc0Rlc2NlbmRhbnRPZihuKSkKLSAgICAgICAgICAgICAgICBu
ZXh0ID0gcGFzdEVuZDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0Jsb2NrKG4pICYmIGNh
bkhhdmVDaGlsZHJlbkZvckVkaXRpbmcobikgJiYgbmV4dCA9PSBwYXN0RW5kKQotICAgICAgICAg
ICAgLy8gRG9uJ3Qgd3JpdGUgb3V0IGVtcHR5IGJsb2NrIGNvbnRhaW5lcnMgdGhhdCBhcmVuJ3Qg
ZnVsbHkgc2VsZWN0ZWQuCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAg
IC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgbWFya3VwLgotICAgICAgICBpZiAoYWRkTWFya3VwRm9y
Tm9kZSkgewotCi0gICAgICAgICAgICBhY2N1bXVsYXRvci5pbnNlcnRPcGVuVGFnKG4sIHVwZGF0
ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUsIGFic29sdXRlVVJMcyk7Ci0gICAgICAgICAgICBpZiAo
bm9kZXMpCi0gICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVuZChuKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKG4tPmZpcnN0Q2hpbGQoKSA9PSAwIHx8IHNraXBEZXNjZW5kYW50
cykgewotICAgICAgICAgICAgLy8gTm9kZSBoYXMgbm8gY2hpbGRyZW4sIG9yIHdlIGFyZSBza2lw
cGluZyBpdCdzIGRlc2NlbmRhbnRzLCBhZGQgaXRzIGNsb3NlIHRhZyBub3cuCi0gICAgICAgICAg
ICBpZiAoYWRkTWFya3VwRm9yTm9kZSkgewotICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLmlu
c2VydEVuZFRhZyhuKTsKLSAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gbjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgaXMg
dGhlIGxhc3QgbGVhZiBvZiBhIHRyZWUuCi0gICAgICAgICAgICBpZiAoIW4tPm5leHRTaWJsaW5n
KCkgfHwgbmV4dCA9PSBwYXN0RW5kKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFhbmNlc3RvcnNU
b0Nsb3NlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB1cCB0aGUg
YW5jZXN0b3JzLgotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlICphbmNlc3RvciA9IGFuY2VzdG9yc1RvQ2xvc2UubGFzdCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRP
ZihhbmNlc3RvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFu
Y2VzdG9ycyB1cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFjY3VtdWxhdG9yLmluc2VydEVuZFRhZyhhbmNlc3Rvcik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0Q2xvc2VkID0gYW5jZXN0b3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
bmNlc3RvcnNUb0Nsb3NlLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGls
ZSAoIWFuY2VzdG9yc1RvQ2xvc2UuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gU3Vycm91bmQgdGhlIGN1cnJlbnRseSBh
Y2N1bXVsYXRlZCBtYXJrdXAgd2l0aCBtYXJrdXAgZm9yIGFuY2VzdG9ycyB3ZSBuZXZlciBvcGVu
ZWQgYXMgd2UgbGVhdmUgdGhlIHN1YnRyZWUocykgcm9vdGVkIGF0IHRob3NlIGFuY2VzdG9ycy4K
LSAgICAgICAgICAgICAgICBOb2RlKiBuZXh0UGFyZW50ID0gbmV4dCA/IG5leHQtPnBhcmVudE5v
ZGUoKSA6IDA7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuICE9IG5l
eHRQYXJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbGFzdEFuY2VzdG9yQ2xvc2Vk
T3JTZWxmID0gbi0+aXNEZXNjZW5kYW50T2YobGFzdENsb3NlZCkgPyBsYXN0Q2xvc2VkIDogbjsK
LSAgICAgICAgICAgICAgICAgICAgZm9yIChOb2RlICpwYXJlbnQgPSBsYXN0QW5jZXN0b3JDbG9z
ZWRPclNlbGYtPnBhcmVudCgpOyBwYXJlbnQgIT0gMCAmJiBwYXJlbnQgIT0gbmV4dFBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEFsbCBhbmNlc3RvcnMgdGhhdCBhcmVuJ3QgaW4gdGhlIGFuY2VzdG9yc1RvQ2xvc2UgbGlz
dCBzaG91bGQgZWl0aGVyIGJlIGEpIHVucmVuZGVyZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0
IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRp
bmcgYXQgc3RhcnROb2RlOgotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9k
ZS0+aXNEZXNjZW5kYW50T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1
bXVsYXRvci53cmFwV2l0aE5vZGUocGFyZW50LCB1cGRhdGVkUmFuZ2UuZ2V0KCksIGFubm90YXRl
LCBhYnNvbHV0ZVVSTHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLT5hcHBlbmQocGFyZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
YWRkTWFya3VwRm9yTm9kZSAmJiAhc2tpcERlc2NlbmRhbnRzKQotICAgICAgICAgICAgLy8gV2Ug
YWRkZWQgbWFya3VwIGZvciB0aGlzIG5vZGUsIGFuZCB3ZSdyZSBkZXNjZW5kaW5nIGludG8gaXQu
ICBTZXQgaXQgdG8gY2xvc2UgZXZlbnR1YWxseS4KLSAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xv
c2UuYXBwZW5kKG4pOwotICAgIH0KKyAgICBOb2RlKiBsYXN0Q2xvc2VkID0gc2VyaWFsaXplTm9k
ZXMoYWNjdW11bGF0b3IsIHN0YXJ0Tm9kZSwgcGFzdEVuZCwgbm9kZXMsIHJhbmdlLCBhbm5vdGF0
ZSwgYWJzb2x1dGVVUkxzKTsKIAogICAgIC8vIEluY2x1ZGUgYW5jZXN0b3JzIHRoYXQgYXJlbid0
IGNvbXBsZXRlbHkgaW5zaWRlIHRoZSByYW5nZSBidXQgYXJlIHJlcXVpcmVkIHRvIHJldGFpbiAK
ICAgICAvLyB0aGUgc3RydWN0dXJlIGFuZCBhcHBlYXJhbmNlIG9mIHRoZSBjb3BpZWQgbWFya3Vw
Lgo=
</data>
<flag name="review"
          id="51628"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>