<?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>58944</bug_id>
          
          <creation_ts>2011-04-19 16:53:21 -0700</creation_ts>
          <short_desc>bidiNext should be split into two separate functions</short_desc>
          <delta_ts>2011-04-26 16:05:19 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>59025</dependson>
    
    <dependson>59033</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>388917</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-19 16:53:21 -0700</bug_when>
    <thetext>bidiNext should be split into two separate functions

bidiNext has two (mostly unrelated) modes.

Either it&apos;s walking to the next RenderText, or it&apos;s walking to the next RenderInline.  This is controlled (confusingly) by the skipInlines bool, which when false, puts it in &quot;walk to inlines&quot; mode.

Here are the 7 callsites:

InlineIterator.h:             o = bidiNext(root, o, resolver, skipInlines); // Just plumbing
InlineIterator.h:         o = bidiNext(root, o, resolver, skipInlines); // Just plumbing

InlineIterator.h:     moveTo(bidiNext(m_root, m_obj, resolver), 0); // The normal walk-to-the-next  RenderText mode (and the only place that ever notifies the resolver when entering/leaving inlines).

InlineIterator.h:             obj = bidiNext(m_sor.root(), obj); // Used by InlineBidiIterator, really should just be an InlineIterator.increment() call.

RenderBlock.cpp:             o = bidiNext(this, o, 0, false, &amp;endOfInline); // Wants all inlines
RenderBlockLineLayout.cpp:             o = bidiNext(this, o, 0, false, &amp;endOfInline); // Wants all inlines

RenderBlockLineLayout.cpp:     RenderObject* next = bidiNext(block, o); // Looking for the next RenderText, probably should be an InlineIterator.increment() call.
RenderBlockLineLayout.cpp:         RenderObject* next = bidiNext(this, o); // Also probably should just be an InlineIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389727</commentid>
    <comment_count>1</comment_count>
      <attachid>90467</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 18:30:51 -0700</bug_when>
    <thetext>Created attachment 90467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389728</commentid>
    <comment_count>2</comment_count>
      <attachid>90467</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 18:31:36 -0700</bug_when>
    <thetext>Comment on attachment 90467
Patch

It may make the most sense to wait on landing this patch until after I&apos;ve posted further re-writes and everyone can see where I&apos;m going.  I&apos;m pretty sure that the endOfInline nonsense can be avoided.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90467</attachid>
            <date>2011-04-20 18:30:51 -0700</date>
            <delta_ts>2011-04-26 16:05:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58944-20110420183049.patch</filename>
            <type>text/plain</type>
            <size>12744</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NGQ4NmM2MzM2ZGU4ODA5
ZTc0MjRlMWJmZjQ4ODNmMzFhMmM4N2E5Li5hMjc4YmUyZDBjMGFkNDkzMGZlMmU3NDUyNjAxNGMw
MWY4OTlkZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNTkgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBiaWRpTmV4dCBzaG91bGQgYmUgc3BsaXQg
aW50byB0d28gc2VwYXJhdGUgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODk0NAorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgaXQgaXMg
c29tZXdoYXQgZGlmZmljdWx0IHRvIHJlYWQgdGhlIGRpZmYuCisgICAgICAgIFRoaXMgY2hhbmdl
IHNwbGl0cyBiaWRpTmV4dCBpbnRvIHR3byAodmVyeSBzaW1pbGFyKSBmdW5jdGlvbnMKKyAgICAg
ICAgc2ltcGxpZnlpbmcgdGhlIGNvZGUgaW4gYm90aC4gIFRoZXJlIGlzIGZ1cnRoZXIgcmVmYWN0
b3JpbmcKKyAgICAgICAgdG8gZG8gaGVyZSwgYnV0IHRoaXMgaXMgYW5vdGhlciBpbmNyZW1lbnRh
bCBzdGVwIHRvd2FyZHMgdmljdG9yeS4KKworICAgICAgICBJIGJlbGlldmUgSSBub3cgdW5kZXJz
dGFuZCB0aGUgdHdvIGNhc2VzLgorICAgICAgICBTa2lwcGluZ0lubGluZXMgaXMgdXNlZCBmb3Ig
SW5saW5lSXRlcmF0b3IsIGFzIGl0IHdhbnRzIHRvIGp1c3QKKyAgICAgICAgd2FsayBmcm9tIGNo
YXJhY3RlciB0byBjaGFyYWN0ZXIgaW4gdGhlIERPTS4KKyAgICAgICAgQXMgc2VlbiBmcm9tIGlz
SXRlcmF0b3JUYXJnZXQgdGhpcyB3aWxsIGFsc28gcmV0dXJuIHBvc2l0aW9uZWQsCisgICAgICAg
IGZsb2F0aW5nIGFuZCByZXBsYWNlIGVsZW1lbnRzIChhcyB0aG9zZSBhbHNvIHBhcnRpY2lwYXRl
IGluIAorICAgICAgICB0ZXh0IGZsb3cpLgorICAgICAgICBOb3RTa2lwcGluZ0lubGluZXMgaXMg
dXNlZCBmb3Igd2Fsa2luZyBhbGwgaW5saW5lcyBpbiBhIHN1YnRyZWUKKyAgICAgICAgYW5kIHdp
bGwgcmV0dXJuIGV2ZXJ5IGlubGluZSB3aXRoIGNoaWxkcmVuICp0d2ljZSouICBDYWxsZXJzCisg
ICAgICAgIGF2b2lkIGFjdGluZyBvbiB0aGVzZSBpbmxpbmVzIHR3aWNlIGJ5IGNoZWNraW5nIGVu
ZE9mSW5saW5lLgorCisgICAgICAgIEkgYmVsaWV2ZSB0aGUgZW5kT2ZJbmxpbmUgYm9vbCBjb3Vs
ZCBiZSByZXBsYWNlZCBieSB1c2Ugb2YKKyAgICAgICAgYSBjdXJyZW50QXRTdGFydCA9PSBjdXJy
ZW50IGNvbXBhcmlzb24gdG8gYXZvaWQgcmV0dXJuaW5nIHRoZSBzYW1lCisgICAgICAgIGlubGlu
ZSB3ZSBqdXN0IHJldHVybmVkIGluIHRoZSBlbXB0eUlubGluZSBjYXNlLgorCisgICAgICAgIGJp
ZGlGaXJzdC9iaWRpTmV4dCBoYXZlIHJlbWFpbmVkIGxhcmdlbHkgdW5jaGFuZ2VkIHNpbmNlIHJl
dmlzaW9uIDEKKyAgICAgICAgb2YgdGhlIHdlYmtpdCByZXBvc2l0b3J5LiAgSSBiZWxpZXZlIHRo
ZXkgY291bGQgbm93IGJvdGggYmUgcmVwbGFjZWQKKyAgICAgICAgYnkgYW4gaW5saW5lIHRyZWUg
d2Fsa2VyIHdpdGggc29tZSBvYnNlcnZlciBtZXRob2RzIGZvciBub3RpZnlpbmcKKyAgICAgICAg
b2YgZW50ZXIvZXhpdCBvZiBpbmxpbmVzLCBidXQgdGhhdCdzIGFub3RoZXIgcGF0Y2guCisKKyAg
ICAgICAgWW91J2xsIG5vdGljZSB0aGF0IEkgYWxzbyByZXBsYWNlZCB0aGUgdHdvIGVuZC1vZi1p
bmxpbmUgZGV0ZWN0aW9uCisgICAgICAgIGlmcyB3aXRoIGEgc2luZ2xlIGlmIGluIE5vdFNraXBw
aW5nSW5saW5lcywgbWFraW5nIGl0IG1vcmUgY2xvc2VseQorICAgICAgICByZXNlbWJsZSB0aGUg
U2tpcHBpbmdJbmxpbmVzIGluIGhvdyBpdCBjYWxscyBub3RpZnkgbWV0aG9kcyBvbiB0aGUKKyAg
ICAgICAgcmVzb2x2ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzRW1wdHlJbmxpbmUpOgorICAgICAgICAgLSBBZGRlZCBmb3Ig
YmlkaU5leHRTa2lwcGluZ0lubGluZXMsIGluIHRoZSBOb3RTa2lwcGluZ0lubGluZXMKKyAgICAg
ICAgICAgY2FzZSB3ZSBhbHdheXMgcmV0dXJuIGlubGluZXMgYXQgbGVhc3Qgb25jZSwgZW1wdHkg
b3Igbm90LgorICAgICAgICAoV2ViQ29yZTo6YmlkaU5leHRTa2lwcGluZ0lubGluZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6YmlkaU5leHROb3RTa2lwcGluZ0lubGluZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6YmlkaUZpcnN0U2tpcHBpbmdJbmxpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6OmJpZGlG
aXJzdE5vdFNraXBwaW5nSW5saW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJpZGlSZXNvbHZlcjo6YXBw
ZW5kUnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyZWFrKToKKworMjAxMS0wNC0yMCAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKICAgICAgICAgU3BsaXQgb3V0IGlzSXRlcmF0b3JUYXJnZXQgZnJvbSBiaWRpTmV4
dCBhbmQgYmlkaUZpcnN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTAzMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
CmluZGV4IDMzNDEyZmVmYThlZTA4Yzc0ZGEyZDkyNDI0ZmVhNDU5YzVhZTAwYTUuLmM3OWE4ZTQ1
YzQ4MTQ0MzgxNDE3NzAyMDBjMjI5ZWNjNmFhYzIyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0xMzcsMzIgKzEzNywyNiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4g
b2JqZWN0LT5pc1RleHQoKSB8fCBvYmplY3QtPmlzRmxvYXRpbmcoKSB8fCBvYmplY3QtPmlzUG9z
aXRpb25lZCgpIHx8IG9iamVjdC0+aXNSZXBsYWNlZCgpOwogfQogCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNFbXB0eUlubGluZShSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gIW9i
amVjdC0+Zmlyc3RDaGlsZCgpICYmIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKTsKK30KKwogLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgbWlzbGVhZGluZ2x5IG5hbWVkLiBJdCBoYXMgbGl0dGxl
IHRvIGRvIHdpdGggYmlkaS4KLS8vIFRoaXMgZnVuY3Rpb24gd2lsbCBpdGVyYXRlIG92ZXIgaW5s
aW5lcyB3aXRoaW4gYSBibG9jaywgb3B0aW9uYWxseSBub3RpZnlpbmcKLS8vIGEgYmlkaSByZXNv
bHZlciBhcyBpdCBlbnRlcnMvZXhpdHMgaW5saW5lcyAoc28gaXQgY2FuIHB1c2gvcG9wIGVtYmVk
ZGluZyBsZXZlbHMpLgotc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0KFJlbmRl
ck9iamVjdCogcm9vdCwgUmVuZGVyT2JqZWN0KiBjdXJyZW50LCBJbmxpbmVCaWRpUmVzb2x2ZXIq
IHJlc29sdmVyID0gMCwgYm9vbCBza2lwSW5saW5lcyA9IHRydWUsIGJvb2wqIGVuZE9mSW5saW5l
UHRyID0gMCkKKy8vIFRoaXMgZnVuY3Rpb24gd2lsbCBpdGVyYXRlIG92ZXIgY2hpbGRyZW4gb2Yg
YSBSZW5kZXJPYmplY3QsIHJldHVybmluZyB0aGVtCisvLyB3aGVuIHRoZXkgbWF0Y2ggaXNJdGVy
YXRvclRhcmdldCgpLgorc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0U2tpcHBp
bmdJbmxpbmVzKFJlbmRlck9iamVjdCogcm9vdCwgUmVuZGVyT2JqZWN0KiBjdXJyZW50LCBJbmxp
bmVCaWRpUmVzb2x2ZXIqIHJlc29sdmVyID0gMCkKIHsKICAgICBSZW5kZXJPYmplY3QqIG5leHQg
PSAwOwotICAgIC8vIG9sZEVuZE9mSW5saW5lIGRlbm90ZXMgaWYgd2hlbiB3ZSBsYXN0IHN0b3Bw
ZWQgaXRlcmF0aW5nIGlmIHdlIHdlcmUgYXQgdGhlIGVuZCBvZiBhbiBpbmxpbmUuCi0gICAgYm9v
bCBvbGRFbmRPZklubGluZSA9IGVuZE9mSW5saW5lUHRyID8gKmVuZE9mSW5saW5lUHRyIDogZmFs
c2U7Ci0gICAgYm9vbCBlbmRPZklubGluZSA9IGZhbHNlOwotCiAgICAgd2hpbGUgKGN1cnJlbnQp
IHsKICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgIGlmICghb2xkRW5kT2ZJbmxpbmUgJiYgIWlz
SXRlcmF0b3JUYXJnZXQoY3VycmVudCkpIHsKKyAgICAgICAgaWYgKCFpc0l0ZXJhdG9yVGFyZ2V0
KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBuZXh0ID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwog
ICAgICAgICAgICAgbm90aWZ5UmVzb2x2ZXJFbnRlcmVkT2JqZWN0KHJlc29sdmVyLCBuZXh0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIGhpdCB0aGlzIHdoZW4gZWl0aGVyIGN1cnJlbnQg
aGFzIG5vIGNoaWxkcmVuLCBvciB3aGVuIGN1cnJlbnQgaXMgbm90IGEgcmVuZGVyZXIgd2UgY2Fy
ZSBhYm91dC4KICAgICAgICAgaWYgKCFuZXh0KSB7Ci0gICAgICAgICAgICAvLyBJZiBpdCBpcyBh
IHJlbmRlcmVyIHdlIGNhcmUgYWJvdXQsIGFuZCB3ZSdyZSBkb2luZyBvdXIgaW5saW5lLXdhbGss
IHJldHVybiBpdC4KLSAgICAgICAgICAgIGlmICghc2tpcElubGluZXMgJiYgIW9sZEVuZE9mSW5s
aW5lICYmIGN1cnJlbnQtPmlzUmVuZGVySW5saW5lKCkpIHsKLSAgICAgICAgICAgICAgICBuZXh0
ID0gY3VycmVudDsKLSAgICAgICAgICAgICAgICBlbmRPZklubGluZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHdoaWxlIChjdXJy
ZW50ICYmIGN1cnJlbnQgIT0gcm9vdCkgewogICAgICAgICAgICAgICAgIG5vdGlmeVJlc29sdmVy
V2lsbEV4aXRPYmplY3QocmVzb2x2ZXIsIGN1cnJlbnQpOwogCkBAIC0xNzMsMjAgKzE2Nyw1MSBA
QCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaU5leHQoUmVuZGVyT2JqZWN0KiByb290
LCBSZW5kZXJPYmplY3QqIGN1cnJlbnQsCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudCgpOwotICAgICAgICAgICAgICAgIGlmICgh
c2tpcElubGluZXMgJiYgY3VycmVudCAmJiBjdXJyZW50ICE9IHJvb3QgJiYgY3VycmVudC0+aXNS
ZW5kZXJJbmxpbmUoKSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgh
bmV4dCB8fCBpc0l0ZXJhdG9yVGFyZ2V0KG5leHQpIHx8IGlzRW1wdHlJbmxpbmUobmV4dCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY3VycmVudCA9IG5leHQ7CisgICAgfQorCisgICAg
cmV0dXJuIG5leHQ7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIGJpZGlO
ZXh0U2tpcHBpbmdJbmxpbmVzLCBleGNlcHQgaXQgd2lsbCBhbHdheXMKKy8vIHJldHVybiBhbiBp
bmxpbmUgYmVmb3JlIGxlYXZpbmcgaXQgKGFuZCBtYXJrIGVuZE9mSW5saW5lUHRyIGFjY29yZGlu
Z2x5KS4KK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpTmV4dE5vdFNraXBwaW5nSW5s
aW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIFJlbmRlck9iamVjdCogY3VycmVudCwgYm9vbCogZW5k
T2ZJbmxpbmVQdHIgPSAwKQoreworICAgIFJlbmRlck9iamVjdCogbmV4dCA9IDA7CisgICAgLy8g
RklYTUU6IEkgYmVsaWV2ZSBvbGRFbmRPZklubGluZSBpcyB0cnlpbmcgdG8gYXZvaWQgcmV0dXJu
aW5nIHRoZSBzYW1lIHZhbHVlCisgICAgLy8gZnJvbSB0d28gc3VjY2Vzc2l2ZSBjYWxscy4gU2lt
cGxlciBtYXkgYmUgdG8gc2F2ZSBjdXJyZW50IGFzIHByZXZpb3VzCisgICAgLy8gYW5kIHJlcGxh
Y2UgIW9sZEVuZE9mSW5saW5lIHdpdGggY3VycmVudCAhPSBwcmV2aW91cy4KKyAgICBib29sIGVu
ZE9mSW5saW5lID0gZmFsc2U7CisgICAgYm9vbCBvbGRFbmRPZklubGluZSA9IGVuZE9mSW5saW5l
UHRyID8gKmVuZE9mSW5saW5lUHRyIDogZmFsc2U7CisKKyAgICB3aGlsZSAoY3VycmVudCkgewor
ICAgICAgICBuZXh0ID0gMDsKKyAgICAgICAgaWYgKCFvbGRFbmRPZklubGluZSAmJiAhaXNJdGVy
YXRvclRhcmdldChjdXJyZW50KSkKKyAgICAgICAgICAgIG5leHQgPSBjdXJyZW50LT5maXJzdENo
aWxkKCk7CisKKyAgICAgICAgLy8gV2UgaGl0IHRoaXMgd2hlbiBlaXRoZXIgY3VycmVudCBoYXMg
bm8gY2hpbGRyZW4sIG9yIHdoZW4gY3VycmVudCBpcyBub3QgYSByZW5kZXJlciB3ZSBjYXJlIGFi
b3V0LgorICAgICAgICBpZiAoIW5leHQpIHsKKyAgICAgICAgICAgIHdoaWxlIChjdXJyZW50ICYm
IGN1cnJlbnQgIT0gcm9vdCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXNuJ3QgdGhl
IHNhbWUgaW5saW5lIHRoZSBwcmV2aW91cyBjYWxsIHJldHVybmVkLCB0aGVuCisgICAgICAgICAg
ICAgICAgLy8gd2UncmUgYWJvdXQgdG8gZXhpdCBhbiBpbmxpbmUgYW5kIHNob3VsZCByZXR1cm4g
aXQuCisgICAgICAgICAgICAgICAgaWYgKCFvbGRFbmRPZklubGluZSAmJiBjdXJyZW50LT5pc1Jl
bmRlcklubGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBjdXJyZW50OwogICAg
ICAgICAgICAgICAgICAgICBlbmRPZklubGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0ID0gY3VycmVu
dC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dCkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFy
ZW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW5leHQpCi0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAoaXNJdGVyYXRvclRhcmdldChuZXh0KQot
ICAgICAgICAgICAgfHwgKCghc2tpcElubGluZXMgfHwgIW5leHQtPmZpcnN0Q2hpbGQoKSkgLy8g
QWx3YXlzIHJldHVybiBFTVBUWSBpbmxpbmVzLgotICAgICAgICAgICAgICAgICYmIG5leHQtPmlz
UmVuZGVySW5saW5lKCkpKQorICAgICAgICBpZiAoIW5leHQgfHwgaXNJdGVyYXRvclRhcmdldChu
ZXh0KSB8fCBuZXh0LT5pc1JlbmRlcklubGluZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGN1cnJlbnQgPSBuZXh0OwogICAgIH0KQEAgLTIwNyw3ICsyMzIsNyBAQCBzdGF0aWMgaW5s
aW5lIFJlbmRlck9iamVjdCogYmlkaUZpcnN0U2tpcHBpbmdJbmxpbmVzKFJlbmRlck9iamVjdCog
cm9vdCwgSW5saW5lQgogICAgIGlmIChvLT5pc1JlbmRlcklubGluZSgpKSB7CiAgICAgICAgIG5v
dGlmeVJlc29sdmVyRW50ZXJlZE9iamVjdChyZXNvbHZlciwgbyk7CiAgICAgICAgIGlmIChvLT5m
aXJzdENoaWxkKCkpCi0gICAgICAgICAgICBvID0gYmlkaU5leHQocm9vdCwgbywgcmVzb2x2ZXIs
IHRydWUpOworICAgICAgICAgICAgbyA9IGJpZGlOZXh0U2tpcHBpbmdJbmxpbmVzKHJvb3QsIG8s
IHJlc29sdmVyKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBOZXZlciBza2lwIGVt
cHR5IGlubGluZXMuCiAgICAgICAgICAgICBpZiAocmVzb2x2ZXIpCkBAIC0yMTgsNyArMjQzLDcg
QEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nSW5saW5lcyhS
ZW5kZXJPYmplY3QqIHJvb3QsIElubGluZUIKIAogICAgIC8vIEZJWE1FOiBVbmlmeSB0aGlzIHdp
dGggdGhlIGJpZGlOZXh0IGNhbGwgYWJvdmUuCiAgICAgaWYgKG8gJiYgIWlzSXRlcmF0b3JUYXJn
ZXQobykpCi0gICAgICAgIG8gPSBiaWRpTmV4dChyb290LCBvLCByZXNvbHZlciwgdHJ1ZSk7Cisg
ICAgICAgIG8gPSBiaWRpTmV4dFNraXBwaW5nSW5saW5lcyhyb290LCBvLCByZXNvbHZlcik7CiAK
ICAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKICAgICByZXR1cm4gbzsK
QEAgLTIyOCwxMiArMjUzLDExIEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpRmly
c3RTa2lwcGluZ0lubGluZXMoUmVuZGVyT2JqZWN0KiByb290LCBJbmxpbmVCCiBzdGF0aWMgaW5s
aW5lIFJlbmRlck9iamVjdCogYmlkaUZpcnN0Tm90U2tpcHBpbmdJbmxpbmVzKFJlbmRlck9iamVj
dCogcm9vdCkKIHsKICAgICBSZW5kZXJPYmplY3QqIG8gPSByb290LT5maXJzdENoaWxkKCk7Ci0g
ICAgLy8gSWYgZWl0aGVyIHRoZXJlIGFyZSBubyBjaGlsZHJlbiB0byB3YWxrLCBvciB0aGUgZmly
c3Qgb25lIGlzIGNvcnJlY3QKLSAgICAvLyB0aGVuIGp1c3QgcmV0dXJuIGl0LgorICAgIC8vIElm
IGVpdGhlciB0aGVyZSBhcmUgbm8gY2hpbGRyZW4gdG8gd2Fsaywgb3IgdGhlIGZpcnN0IG9uZSBp
cyBjb3JyZWN0IHRoZW4ganVzdCByZXR1cm4gaXQuCiAgICAgaWYgKCFvIHx8IG8tPmlzUmVuZGVy
SW5saW5lKCkgfHwgaXNJdGVyYXRvclRhcmdldChvKSkKICAgICAgICAgcmV0dXJuIG87CiAKLSAg
ICByZXR1cm4gYmlkaU5leHQocm9vdCwgbywgMCwgZmFsc2UpOworICAgIHJldHVybiBiaWRpTmV4
dE5vdFNraXBwaW5nSW5saW5lcyhyb290LCBvKTsKIH0KIAogaW5saW5lIHZvaWQgSW5saW5lSXRl
cmF0b3I6OmluY3JlbWVudChJbmxpbmVCaWRpUmVzb2x2ZXIqIHJlc29sdmVyKQpAQCAtMjQ2LDcg
KzI3MCw3IEBAIGlubGluZSB2b2lkIElubGluZUl0ZXJhdG9yOjppbmNyZW1lbnQoSW5saW5lQmlk
aVJlc29sdmVyKiByZXNvbHZlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
YmlkaU5leHQgY2FuIHJldHVybiAwLCBzbyB1c2UgbW92ZVRvIGluc3RlYWQgb2YgbW92ZVRvU3Rh
cnRPZgotICAgIG1vdmVUbyhiaWRpTmV4dChtX3Jvb3QsIG1fb2JqLCByZXNvbHZlciksIDApOwor
ICAgIG1vdmVUbyhiaWRpTmV4dFNraXBwaW5nSW5saW5lcyhtX3Jvb3QsIG1fb2JqLCByZXNvbHZl
ciksIDApOwogfQogCiBpbmxpbmUgYm9vbCBJbmxpbmVJdGVyYXRvcjo6YXRFbmQoKSBjb25zdApA
QCAtMjkyLDcgKzMxNiw3IEBAIGlubGluZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5k
UnVuKCkKICAgICAgICAgd2hpbGUgKG9iaiAmJiBvYmogIT0gbV9lb3IubV9vYmogJiYgb2JqICE9
IGVuZE9mTGluZS5tX29iaikgewogICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNG
b3JPYmplY3QobV9ydW5zLCBzdGFydCwgb2JqLT5sZW5ndGgoKSwgb2JqLCAqdGhpcyk7CiAgICAg
ICAgICAgICBzdGFydCA9IDA7Ci0gICAgICAgICAgICBvYmogPSBiaWRpTmV4dChtX3Nvci5yb290
KCksIG9iaik7CisgICAgICAgICAgICBvYmogPSBiaWRpTmV4dFNraXBwaW5nSW5saW5lcyhtX3Nv
ci5yb290KCksIG9iaik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9iaikgewogICAgICAgICAg
ICAgdW5zaWduZWQgcG9zID0gb2JqID09IG1fZW9yLm1fb2JqID8gbV9lb3IubV9wb3MgOiBVSU5U
X01BWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDAyYzk2
MWQxN2E0YTNmZGQ3ZWZiYzBkNDk3YzhiNDNhMTRlMzg2YmYuLjc0MDVjZGJiYzc4Mjc3NDc2M2M5
N2MyYzc5ZDI2MDU3NTllMDY4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMjA5MSw3ICsyMDkxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2ltcGxpZmll
ZE5vcm1hbEZsb3dMYXlvdXQoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoby0+aXNUZXh0KCkgfHwgKG8tPmlzUmVuZGVySW5saW5lKCkgJiYgIWVuZE9mSW5saW5l
KSkKICAgICAgICAgICAgICAgICBvLT5zZXROZWVkc0xheW91dChmYWxzZSk7Ci0gICAgICAgICAg
ICBvID0gYmlkaU5leHQodGhpcywgbywgMCwgZmFsc2UsICZlbmRPZklubGluZSk7CisgICAgICAg
ICAgICBvID0gYmlkaU5leHROb3RTa2lwcGluZ0lubGluZXModGhpcywgbywgJmVuZE9mSW5saW5l
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBHbHlwaCBvdmVyZmxvdyB3aWxsIGdl
dCBsb3N0IGluIHRoaXMgY2FzZSwgYnV0IG5vdCByZWFsbHkgYSBiaWcgZGVhbC4KQEAgLTQ1ODgs
NiArNDU4OCw3IEBAIHN0cnVjdCBJbmxpbmVNaW5NYXhJdGVyYXRvciB7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBuZXh0KCk7CiB9OwogCisvLyBGSVhNRTogVGhpcyBpcyBhIGNvcHkgb2YgYmlkaU5leHRO
b3RTa2lwcGluZ0lubGluZXMgZnJvbSBJbmxpbmVJdGVyYXRvci5oIGFuZCBzaG91bGQgYmUgdW5p
ZmllZCB3aXRoIHRoYXQgZnVuY3Rpb24hCiBSZW5kZXJPYmplY3QqIElubGluZU1pbk1heEl0ZXJh
dG9yOjpuZXh0KCkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlc3VsdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGYy
OWRmOTJlYmZiMjY2YTUzNWJlMGJiOTJkNDA5YzIxZWMzODI0ZTAuLmJiNDM2ZTY1NTQzYTMzNjdj
OGU3MTUyMWQ2ZjFiNzllMTcyMWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBp
bnQmIHJlcGFpbnRMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgZGlydHlMaW5lQm94ZXNGb3JS
ZW5kZXJlcihvLCBmdWxsTGF5b3V0KTsKICAgICAgICAgICAgICAgICBvLT5zZXROZWVkc0xheW91
dChmYWxzZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvID0gYmlkaU5leHQodGhpcywg
bywgMCwgZmFsc2UsICZlbmRPZklubGluZSk7CisgICAgICAgICAgICBvID0gYmlkaU5leHROb3RT
a2lwcGluZ0lubGluZXModGhpcywgbywgJmVuZE9mSW5saW5lKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFdlIHdhbnQgdG8gc2tpcCBhaGVhZCB0byB0aGUgZmlyc3QgZGlydHkgbGluZQpAQCAt
MTQ5NCw3ICsxNDk0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2tpcExlYWRpbmdXaGl0ZXNwYWNl
KElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIGJvb2wgaXNMaW4KIC8vIGhhdmUgYW4gZWZm
ZWN0IG9uIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiAKIHN0YXRpYyBib29s
IHNob3VsZFNraXBXaGl0ZXNwYWNlQWZ0ZXJTdGFydE9iamVjdChSZW5kZXJCbG9jayogYmxvY2ss
IFJlbmRlck9iamVjdCogbywgTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlKQog
ewotICAgIFJlbmRlck9iamVjdCogbmV4dCA9IGJpZGlOZXh0KGJsb2NrLCBvKTsKKyAgICBSZW5k
ZXJPYmplY3QqIG5leHQgPSBiaWRpTmV4dFNraXBwaW5nSW5saW5lcyhibG9jaywgbyk7CiAgICAg
aWYgKG5leHQgJiYgIW5leHQtPmlzQlIoKSAmJiBuZXh0LT5pc1RleHQoKSAmJiB0b1JlbmRlclRl
eHQobmV4dCktPnRleHRMZW5ndGgoKSA+IDApIHsKICAgICAgICAgUmVuZGVyVGV4dCogbmV4dFRl
eHQgPSB0b1JlbmRlclRleHQobmV4dCk7CiAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4dFRl
eHQtPmNoYXJhY3RlcnMoKVswXTsKQEAgLTE3MjcsNyArMTcyNyw3IEBAIElubGluZUl0ZXJhdG9y
IFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBib29sCiAgICAgRVdoaXRlU3BhY2UgY3VycldTID0gc3R5bGUoKS0+d2hpdGVTcGFjZSgp
OwogICAgIEVXaGl0ZVNwYWNlIGxhc3RXUyA9IGN1cnJXUzsKICAgICB3aGlsZSAobykgewotICAg
ICAgICBSZW5kZXJPYmplY3QqIG5leHQgPSBiaWRpTmV4dCh0aGlzLCBvKTsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0ID0gYmlkaU5leHRTa2lwcGluZ0lubGluZXModGhpcywgbyk7CiAKICAg
ICAgICAgY3VycldTID0gby0+aXNSZXBsYWNlZCgpID8gby0+cGFyZW50KCktPnN0eWxlKCktPndo
aXRlU3BhY2UoKSA6IG8tPnN0eWxlKCktPndoaXRlU3BhY2UoKTsKICAgICAgICAgbGFzdFdTID0g
bGFzdC0+aXNSZXBsYWNlZCgpID8gbGFzdC0+cGFyZW50KCktPnN0eWxlKCktPndoaXRlU3BhY2Uo
KSA6IGxhc3QtPnN0eWxlKCktPndoaXRlU3BhY2UoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>