<?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>50412</bug_id>
          
          <creation_ts>2010-12-02 14:43:43 -0800</creation_ts>
          <short_desc>http://www.wunderground.com/US/CA/Hayward.html causes big memory spike during page loading</short_desc>
          <delta_ts>2010-12-07 03:11:36 -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>JavaScriptCore</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>http://www.wunderground.com/US/CA/Hayward.html</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316424</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-02 14:43:43 -0800</bug_when>
    <thetext>http://www.wunderground.com/US/CA/Hayward.html causes big memory spike (&gt;60MB) during page loading.

The memory i used under this stack:

#0  JSC::JSString::resolveRope (this=0x107cdaa0, exec=0x131b5098) at /Users/antti/jasper/webkit/JavaScriptCore/runtime/JSString.cpp:46
#1  0x00390821 in JSC::JSString::value (this=0x107cdaa0, exec=0x131b5098) at JSString.h:327
#2  0x004ca677 in JSC::JSValue::toThisString (this=0xb01ca590, exec=0x131b5098) at JSObject.h:731
#3  0x004c7978 in JSC::stringProtoFuncSubstr (exec=0x131b5098, thisValue={m_ptr = 0x107cdaa0}, args=@0xb01ca728) at /Users/antti/jasper/webkit/JavaScriptCore/runtime/StringPrototype.cpp:728
#4  0x00420743 in JSC::Interpreter::privateExecute (this=0x9855200, flag=JSC::Interpreter::Normal, registerFile=0x985520c, callFrame=0x131b505c, e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316439</commentid>
    <comment_count>1</comment_count>
      <attachid>75418</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-02 15:12:03 -0800</bug_when>
    <thetext>Created attachment 75418
avoid flattening ropes when creating substrings

Creating a substring caused the original string be flattened if it was in the rope form. This could use significant amount of memory by reducing buffer sharing between strings.
        
Add a rope specific substring function that constructs the substring by reusing the rope fibers instead of flattening the rope.
        
No change observed in SunSpider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316441</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-02 15:13:33 -0800</bug_when>
    <thetext>Gavin, you should review this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316447</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-02 15:19:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/8135782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316458</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-02 15:36:04 -0800</bug_when>
    <thetext>Attachment 75418 did not build on qt:
Build output: http://queues.webkit.org/results/6851004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316475</commentid>
    <comment_count>5</comment_count>
      <attachid>75426</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-02 15:51:57 -0800</bug_when>
    <thetext>Created attachment 75426
fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316482</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-02 15:58:44 -0800</bug_when>
    <thetext>Attachment 75418 did not build on win:
Build output: http://queues.webkit.org/results/6811012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316492</commentid>
    <comment_count>7</comment_count>
      <attachid>75426</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-02 16:12:40 -0800</bug_when>
    <thetext>Comment on attachment 75426
fix build

r+.

This looks good to me, but please fix up the existing use of int instead of unsigned for the string length, &amp; remove associated casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318112</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-07 03:11:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73433</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75418</attachid>
            <date>2010-12-02 15:12:03 -0800</date>
            <delta_ts>2010-12-02 15:51:57 -0800</delta_ts>
            <desc>avoid flattening ropes when creating substrings</desc>
            <filename>rope-substring-tot-2.patch</filename>
            <type>text/plain</type>
            <size>9524</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczMjAwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDIgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MDQxMgorICAgICAgICBodHRwOi8vd3d3Lnd1bmRlcmdyb3VuZC5jb20vVVMvQ0EvSGF5d2Fy
ZC5odG1sIGNhdXNlcyBiaWcgbWVtb3J5IHNwaWtlIGR1cmluZyBwYWdlIGxvYWRpbmcgCisgICAg
ICAgIAorICAgICAgICBDcmVhdGluZyBhIHN1YnN0cmluZyBjYXVzZWQgdGhlIG9yaWdpbmFsIHN0
cmluZyBiZSBmbGF0dGVuZWQgaWYgaXQgd2FzIGluIHRoZSByb3BlIGZvcm0uIFRoaXMgY291bGQg
dXNlCisgICAgICAgIHNpZ25pZmljYW50IGFtb3VudCBvZiBtZW1vcnkgYnkgcmVkdWNpbmcgYnVm
ZmVyIHNoYXJpbmcgYmV0d2VlbiBzdHJpbmdzLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgcm9w
ZSBzcGVjaWZpYyBzdWJzdHJpbmcgZnVuY3Rpb24gdGhhdCBjb25zdHJ1Y3RzIHRoZSBzdWJzdHJp
bmcgYnkgcmV1c2luZyB0aGUgcm9wZSBmaWJlcnMKKyAgICAgICAgaW5zdGVhZCBvZiBmbGF0dGVu
aW5nIHRoZSByb3BlLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIG9ic2VydmVkIGluIFN1
blNwaWRlci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3Vic3RyaW5nRnJvbVJvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKwogMjAxMC0xMi0wMiAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNp
b24gNzMxOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKKyAgICAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZXNvbHZlUm9w
ZUZvclN1YnN0cmluZ0N1dG9mZiA9IDQ7CiAKIC8vIE92ZXJ2aWV3OiB0aGlzIG1ldGhvZHMgY29u
dmVydHMgYSBKU1N0cmluZyBmcm9tIGhvbGRpbmcgYSBzdHJpbmcgaW4gcm9wZSBmb3JtCiAvLyBk
b3duIHRvIGEgc2ltcGxlIFVTdHJpbmcgcmVwcmVzZW50YXRpb24uICBJdCBkb2VzIHNvIGJ5IGJ1
aWxkaW5nIHVwIHRoZSBzdHJpbmcKQEAgLTEwNSw2ICsxMDcsNjEgQEAgdm9pZCBKU1N0cmluZzo6
cmVzb2x2ZVJvcGUoRXhlY1N0YXRlKiBleAogICAgICAgICB9CiAgICAgfQogfQorICAgIAorLy8g
VGhpcyBmdW5jdGlvbiBjb25zdHJ1c3RzIGEgc3Vic3RyaW5nIG91dCBvZiBhIHJvcGUgd2l0aG91
dCBmbGF0dGVuaW5nIGJ5IHJldXNpbmcgdGhlIGV4aXN0aW5nIGZpYmVycy4KKy8vIFRoaXMgY2Fu
IHJlZHVjZSBtZW1vcnkgdXNhZ2Ugc3Vic3RhbnRpYWxseS4gU2luY2UgdHJhdmVyc2luZyByb3Bl
cyBpcyBzbG93IHRoZSBmdW5jdGlvbiB3aWxsIHJldmVydCAKKy8vIGJhY2sgdG8gZmxhdHRlbmlu
ZyBpZiB0aGUgcm9wZSB0dXJucyBvdXQgdG8gYmUgbG9uZy4KK0pTU3RyaW5nKiBKU1N0cmluZzo6
c3Vic3RyaW5nRnJvbVJvcGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdWJzdHJpbmdTdGFy
dCwgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoKQoreworICAgIEFTU0VSVChpc1JvcGUoKSk7CisK
KyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IGlmICghc3Vic3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOworCisgICAgVVN0cmluZyBzdWJzdHJpbmdG
aWJlcnNbM107CisgICAgCisgICAgdW5zaWduZWQgZmliZXJDb3VudCA9IDA7CisgICAgdW5zaWdu
ZWQgc3Vic3RyaW5nRmliZXJDb3VudCA9IDA7CisgICAgdW5zaWduZWQgc3Vic3RyaW5nRW5kID0g
c3Vic3RyaW5nU3RhcnQgKyBzdWJzdHJpbmdMZW5ndGg7CisgICAgdW5zaWduZWQgZmliZXJFbmQg
PSAwOworCisgICAgUm9wZUl0ZXJhdG9yIGVuZDsKKyAgICBmb3IgKFJvcGVJdGVyYXRvciBpdCht
X290aGVyLm1fZmliZXJzLmRhdGEoKSwgbV9maWJlckNvdW50KTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICsrZmliZXJDb3VudDsKKyAgICAgICAgU3RyaW5nSW1wbCogZmliZXJTdHJpbmcg
PSAqaXQ7CisgICAgICAgIHVuc2lnbmVkIGZpYmVyU3RhcnQgPSBmaWJlckVuZDsKKyAgICAgICAg
ZmliZXJFbmQgPSBmaWJlclN0YXJ0ICsgZmliZXJTdHJpbmctPmxlbmd0aCgpOworICAgICAgICBp
ZiAoZmliZXJFbmQgPD0gc3Vic3RyaW5nU3RhcnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgdW5zaWduZWQgY29weVN0YXJ0ID0gc3RkOjptYXgoc3Vic3RyaW5nU3RhcnQsIGZpYmVy
U3RhcnQpOworICAgICAgICB1bnNpZ25lZCBjb3B5RW5kID0gc3RkOjptaW4oc3Vic3RyaW5nRW5k
LCBmaWJlckVuZCk7CisgICAgICAgIGlmIChjb3B5U3RhcnQgPT0gZmliZXJTdGFydCAmJiBjb3B5
RW5kID09IGZpYmVyRW5kKQorICAgICAgICAgICAgc3Vic3RyaW5nRmliZXJzW3N1YnN0cmluZ0Zp
YmVyQ291bnQrK10gPSBVU3RyaW5nKGZpYmVyU3RyaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc3Vic3RyaW5nRmliZXJzW3N1YnN0cmluZ0ZpYmVyQ291bnQrK10gPSBVU3RyaW5nKFN0
cmluZ0ltcGw6OmNyZWF0ZShmaWJlclN0cmluZywgY29weVN0YXJ0IC0gZmliZXJTdGFydCwgY29w
eUVuZCAtIGNvcHlTdGFydCkpOworICAgICAgICBpZiAoZmliZXJFbmQgPj0gc3Vic3RyaW5nRW5k
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChmaWJlckNvdW50ID4gcmVzb2x2ZVJv
cGVGb3JTdWJzdHJpbmdDdXRvZmYgfHwgc3Vic3RyaW5nRmliZXJDb3VudCA+PSAzKSB7CisgICAg
ICAgICAgICAvLyBUaGlzIHR1cm5lZCBvdXQgdG8gYmUgYSByZWFsbHkgaW5lZmZpY2llbnQgcm9w
ZS4gSnVzdCBmbGF0dGVuIGl0LgorICAgICAgICAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbV92YWx1ZSwg
c3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
QVNTRVJUKHN1YnN0cmluZ0ZpYmVyQ291bnQgJiYgc3Vic3RyaW5nRmliZXJDb3VudCA8PSAzKTsK
KworICAgIGlmIChzdWJzdHJpbmdMZW5ndGggPT0gMSkgeworICAgICAgICBBU1NFUlQoc3Vic3Ry
aW5nRmliZXJDb3VudCA9PSAxKTsKKyAgICAgICAgVUNoYXIgYyA9IHN1YnN0cmluZ0ZpYmVyc1sw
XS5jaGFyYWN0ZXJzKClbMF07CisgICAgICAgIGlmIChjIDw9IDB4RkYpCisgICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9i
YWxEYXRhLCBjKTsKKyAgICB9CisgICAgaWYgKHN1YnN0cmluZ0ZpYmVyQ291bnQgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgc3Vic3Ry
aW5nRmliZXJzWzBdKTsKKyAgICBpZiAoc3Vic3RyaW5nRmliZXJDb3VudCA9PSAyKQorICAgICAg
ICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBzdWJzdHJpbmdG
aWJlcnNbMF0sIHN1YnN0cmluZ0ZpYmVyc1sxXSk7CisgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0
YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgc3Vic3RyaW5nRmliZXJzWzBdLCBzdWJzdHJpbmdGaWJl
cnNbMV0sIHN1YnN0cmluZ0ZpYmVyc1syXSk7Cit9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnJlcGxh
Y2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjaGFyYWN0ZXIsIGNvbnN0IFVTdHJp
bmcmIHJlcGxhY2VtZW50KQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gNzMxOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzNCw2ICszMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIAorICAgICAgICBKU1N0cmluZyogc3Vic3RyaW5n
KHVuc2lnbmVkIHN1YnN0cmluZ1N0YXJ0LCB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGgpOwogCiAg
ICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CkBAIC0zNTYsNiArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U1N0cmluZyogc3Vic3RyaW5nRnJvbVJvcGUoRXhlY1N0YXRlKiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3Qo
dW5zaWduZWQmIGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTQz
NSw2ICs0MzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3RyaW5ncywgdW5zaWduZWQgY291bnQp
OwogICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdGhpc1ZhbHVlKTsKICAgICAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhGaW5h
bGl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIEpTU3RyaW5nRmluYWxpemVyQ2FsbGJh
Y2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOworICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICB9OwogCiAgICAgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFs
dWUpOwpAQCAtNTE5LDYgKzUyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgcmV0dXJu
IGZpeHVwVlB0cihnbG9iYWxEYXRhLCBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERh
dGEsIHMsIGNhbGxiYWNrLCBjb250ZXh0KSk7CiAgICAgfQorICAgIAorICAgIGlubGluZSBKU1N0
cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOworICAgICAgICBBU1NFUlQobGVu
Z3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOworICAgICAgICBBU1NF
UlQob2Zmc2V0ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkp
OworICAgICAgICBpZiAocy0+aXNSb3BlKCkpCisgICAgICAgICAgICByZXR1cm4gcy0+c3Vic3Ry
aW5nRnJvbVJvcGUoZXhlYywgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4ganNTdWJz
dHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcy0+bV92YWx1ZSwgb2Zmc2V0LCBsZW5ndGgpOwor
ICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiA3MzE5OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcyLDggKzc3MiwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9UaGlzU3RyaW5nKGV4
ZWMpOwotICAgIGludCBsZW4gPSBzLmxlbmd0aCgpOworICAgIGludCBsZW47CisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gMDsKKyAgICBVU3RyaW5nIHVTdHJpbmc7CisgICAgaWYgKHRoaXNWYWx1
ZS5pc1N0cmluZygpKSB7CisgICAgICAgIGpzU3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcq
Pih0aGlzVmFsdWUuYXNDZWxsKCkpOworICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1RoaXNPYmplY3Qo
ZXhlYyktPnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBsZW4gPSB1U3RyaW5nLmxlbmd0aCgpOwor
ICAgIH0KIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVl
IGExID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC03ODksNyArNzk3LDExIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICB9CiAgICAgaWYgKHN0YXJ0ICsgbGVu
Z3RoID4gbGVuKQogICAgICAgICBsZW5ndGggPSBsZW4gLSBzdGFydDsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpKSk7CisgICAgdW5zaWduZWQgc3Vi
c3RyaW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgIHVuc2lnbmVk
IHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworICAgIGlm
IChqc1N0cmluZykKKyAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGpzU3RyaW5nLCBz
dWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3Vic3RyaW5nKGV4ZWMsIHVTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdM
ZW5ndGgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzk3LDggKzgwOSwxNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9UaGlzU3RyaW5nKGV4
ZWMpOwotICAgIGludCBsZW4gPSBzLmxlbmd0aCgpOworICAgIGludCBsZW47CisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gMDsKKyAgICBVU3RyaW5nIHVTdHJpbmc7CisgICAgaWYgKHRoaXNWYWx1
ZS5pc1N0cmluZygpKSB7CisgICAgICAgIGpzU3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcq
Pih0aGlzVmFsdWUuYXNDZWxsKCkpOworICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1RoaXNPYmplY3Qo
ZXhlYyktPnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBsZW4gPSB1U3RyaW5nLmxlbmd0aCgpOwor
ICAgIH0KKyAgICAKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBK
U1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC04MjMsNyArODQ0LDExIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgZW5kID0gc3RhcnQ7
CiAgICAgICAgIHN0YXJ0ID0gdGVtcDsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N1YnN0cmluZyhleGVjLCBzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZW5kKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCkpKTsK
KyAgICB1bnNpZ25lZCBzdWJzdHJpbmdTdGFydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFy
dCk7CisgICAgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGVuZCkgLSBzdWJzdHJpbmdTdGFydDsKKyAgICBpZiAoanNTdHJpbmcpCisgICAgICAgIHJldHVy
biBqc1N1YnN0cmluZyhleGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xl
bmd0aCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCB1U3Ry
aW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBl
eGVjKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75426</attachid>
            <date>2010-12-02 15:51:57 -0800</date>
            <delta_ts>2010-12-02 16:12:40 -0800</delta_ts>
            <desc>fix build</desc>
            <filename>rope-substring-tot-3.patch</filename>
            <type>text/plain</type>
            <size>9552</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczMjAwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDIgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MDQxMgorICAgICAgICBodHRwOi8vd3d3Lnd1bmRlcmdyb3VuZC5jb20vVVMvQ0EvSGF5d2Fy
ZC5odG1sIGNhdXNlcyBiaWcgbWVtb3J5IHNwaWtlIGR1cmluZyBwYWdlIGxvYWRpbmcgCisgICAg
ICAgIAorICAgICAgICBDcmVhdGluZyBhIHN1YnN0cmluZyBjYXVzZWQgdGhlIG9yaWdpbmFsIHN0
cmluZyBiZSBmbGF0dGVuZWQgaWYgaXQgd2FzIGluIHRoZSByb3BlIGZvcm0uIFRoaXMgY291bGQg
dXNlCisgICAgICAgIHNpZ25pZmljYW50IGFtb3VudCBvZiBtZW1vcnkgYnkgcmVkdWNpbmcgYnVm
ZmVyIHNoYXJpbmcgYmV0d2VlbiBzdHJpbmdzLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgcm9w
ZSBzcGVjaWZpYyBzdWJzdHJpbmcgZnVuY3Rpb24gdGhhdCBjb25zdHJ1Y3RzIHRoZSBzdWJzdHJp
bmcgYnkgcmV1c2luZyB0aGUgcm9wZSBmaWJlcnMKKyAgICAgICAgaW5zdGVhZCBvZiBmbGF0dGVu
aW5nIHRoZSByb3BlLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIG9ic2VydmVkIGluIFN1
blNwaWRlci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3Vic3RyaW5nRnJvbVJvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKwogMjAxMC0xMi0wMiAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNp
b24gNzMxOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKKyAgICAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByZXNvbHZlUm9w
ZUZvclN1YnN0cmluZ0N1dG9mZiA9IDQ7CiAKIC8vIE92ZXJ2aWV3OiB0aGlzIG1ldGhvZHMgY29u
dmVydHMgYSBKU1N0cmluZyBmcm9tIGhvbGRpbmcgYSBzdHJpbmcgaW4gcm9wZSBmb3JtCiAvLyBk
b3duIHRvIGEgc2ltcGxlIFVTdHJpbmcgcmVwcmVzZW50YXRpb24uICBJdCBkb2VzIHNvIGJ5IGJ1
aWxkaW5nIHVwIHRoZSBzdHJpbmcKQEAgLTEwNSw2ICsxMDcsNjEgQEAgdm9pZCBKU1N0cmluZzo6
cmVzb2x2ZVJvcGUoRXhlY1N0YXRlKiBleAogICAgICAgICB9CiAgICAgfQogfQorICAgIAorLy8g
VGhpcyBmdW5jdGlvbiBjb25zdHJ1c3RzIGEgc3Vic3RyaW5nIG91dCBvZiBhIHJvcGUgd2l0aG91
dCBmbGF0dGVuaW5nIGJ5IHJldXNpbmcgdGhlIGV4aXN0aW5nIGZpYmVycy4KKy8vIFRoaXMgY2Fu
IHJlZHVjZSBtZW1vcnkgdXNhZ2Ugc3Vic3RhbnRpYWxseS4gU2luY2UgdHJhdmVyc2luZyByb3Bl
cyBpcyBzbG93IHRoZSBmdW5jdGlvbiB3aWxsIHJldmVydCAKKy8vIGJhY2sgdG8gZmxhdHRlbmlu
ZyBpZiB0aGUgcm9wZSB0dXJucyBvdXQgdG8gYmUgbG9uZy4KK0pTU3RyaW5nKiBKU1N0cmluZzo6
c3Vic3RyaW5nRnJvbVJvcGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdWJzdHJpbmdTdGFy
dCwgdW5zaWduZWQgc3Vic3RyaW5nTGVuZ3RoKQoreworICAgIEFTU0VSVChpc1JvcGUoKSk7CisK
KyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IGlmICghc3Vic3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOworCisgICAgVVN0cmluZyBzdWJzdHJpbmdG
aWJlcnNbM107CisgICAgCisgICAgdW5zaWduZWQgZmliZXJDb3VudCA9IDA7CisgICAgdW5zaWdu
ZWQgc3Vic3RyaW5nRmliZXJDb3VudCA9IDA7CisgICAgdW5zaWduZWQgc3Vic3RyaW5nRW5kID0g
c3Vic3RyaW5nU3RhcnQgKyBzdWJzdHJpbmdMZW5ndGg7CisgICAgdW5zaWduZWQgZmliZXJFbmQg
PSAwOworCisgICAgUm9wZUl0ZXJhdG9yIGVuZDsKKyAgICBmb3IgKFJvcGVJdGVyYXRvciBpdCht
X290aGVyLm1fZmliZXJzLmRhdGEoKSwgbV9maWJlckNvdW50KTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICsrZmliZXJDb3VudDsKKyAgICAgICAgU3RyaW5nSW1wbCogZmliZXJTdHJpbmcg
PSAqaXQ7CisgICAgICAgIHVuc2lnbmVkIGZpYmVyU3RhcnQgPSBmaWJlckVuZDsKKyAgICAgICAg
ZmliZXJFbmQgPSBmaWJlclN0YXJ0ICsgZmliZXJTdHJpbmctPmxlbmd0aCgpOworICAgICAgICBp
ZiAoZmliZXJFbmQgPD0gc3Vic3RyaW5nU3RhcnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgdW5zaWduZWQgY29weVN0YXJ0ID0gc3RkOjptYXgoc3Vic3RyaW5nU3RhcnQsIGZpYmVy
U3RhcnQpOworICAgICAgICB1bnNpZ25lZCBjb3B5RW5kID0gc3RkOjptaW4oc3Vic3RyaW5nRW5k
LCBmaWJlckVuZCk7CisgICAgICAgIGlmIChjb3B5U3RhcnQgPT0gZmliZXJTdGFydCAmJiBjb3B5
RW5kID09IGZpYmVyRW5kKQorICAgICAgICAgICAgc3Vic3RyaW5nRmliZXJzW3N1YnN0cmluZ0Zp
YmVyQ291bnQrK10gPSBVU3RyaW5nKGZpYmVyU3RyaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc3Vic3RyaW5nRmliZXJzW3N1YnN0cmluZ0ZpYmVyQ291bnQrK10gPSBVU3RyaW5nKFN0
cmluZ0ltcGw6OmNyZWF0ZShmaWJlclN0cmluZywgY29weVN0YXJ0IC0gZmliZXJTdGFydCwgY29w
eUVuZCAtIGNvcHlTdGFydCkpOworICAgICAgICBpZiAoZmliZXJFbmQgPj0gc3Vic3RyaW5nRW5k
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChmaWJlckNvdW50ID4gcmVzb2x2ZVJv
cGVGb3JTdWJzdHJpbmdDdXRvZmYgfHwgc3Vic3RyaW5nRmliZXJDb3VudCA+PSAzKSB7CisgICAg
ICAgICAgICAvLyBUaGlzIHR1cm5lZCBvdXQgdG8gYmUgYSByZWFsbHkgaW5lZmZpY2llbnQgcm9w
ZS4gSnVzdCBmbGF0dGVuIGl0LgorICAgICAgICAgICAgcmVzb2x2ZVJvcGUoZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbV92YWx1ZSwg
c3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
QVNTRVJUKHN1YnN0cmluZ0ZpYmVyQ291bnQgJiYgc3Vic3RyaW5nRmliZXJDb3VudCA8PSAzKTsK
KworICAgIGlmIChzdWJzdHJpbmdMZW5ndGggPT0gMSkgeworICAgICAgICBBU1NFUlQoc3Vic3Ry
aW5nRmliZXJDb3VudCA9PSAxKTsKKyAgICAgICAgVUNoYXIgYyA9IHN1YnN0cmluZ0ZpYmVyc1sw
XS5jaGFyYWN0ZXJzKClbMF07CisgICAgICAgIGlmIChjIDw9IDB4RkYpCisgICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9i
YWxEYXRhLCBjKTsKKyAgICB9CisgICAgaWYgKHN1YnN0cmluZ0ZpYmVyQ291bnQgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgc3Vic3Ry
aW5nRmliZXJzWzBdKTsKKyAgICBpZiAoc3Vic3RyaW5nRmliZXJDb3VudCA9PSAyKQorICAgICAg
ICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBzdWJzdHJpbmdG
aWJlcnNbMF0sIHN1YnN0cmluZ0ZpYmVyc1sxXSk7CisgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0
YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgc3Vic3RyaW5nRmliZXJzWzBdLCBzdWJzdHJpbmdGaWJl
cnNbMV0sIHN1YnN0cmluZ0ZpYmVyc1syXSk7Cit9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnJlcGxh
Y2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjaGFyYWN0ZXIsIGNvbnN0IFVTdHJp
bmcmIHJlcGxhY2VtZW50KQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gNzMxOTkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzNCw2ICszMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIAorICAgICAgICBKU1N0cmluZyogc3Vic3RyaW5n
KHVuc2lnbmVkIHN1YnN0cmluZ1N0YXJ0LCB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGgpOwogCiAg
ICAgICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CkBAIC0zNTYsNiArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U1N0cmluZyogc3Vic3RyaW5nRnJvbVJvcGUoRXhlY1N0YXRlKiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3Qo
dW5zaWduZWQmIGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTQz
NSw2ICs0MzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3RyaW5ncywgdW5zaWduZWQgY291bnQp
OwogICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdGhpc1ZhbHVlKTsKICAgICAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhGaW5h
bGl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIEpTU3RyaW5nRmluYWxpemVyQ2FsbGJh
Y2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOworICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICB9OwogCiAgICAgSlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFs
dWUpOwpAQCAtNTE5LDYgKzUyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgcmV0dXJu
IGZpeHVwVlB0cihnbG9iYWxEYXRhLCBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERh
dGEsIHMsIGNhbGxiYWNrLCBjb250ZXh0KSk7CiAgICAgfQorICAgIAorICAgIGlubGluZSBKU1N0
cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOworICAgICAgICBBU1NFUlQobGVu
Z3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOworICAgICAgICBBU1NF
UlQob2Zmc2V0ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkp
OworICAgICAgICBpZiAocy0+aXNSb3BlKCkpCisgICAgICAgICAgICByZXR1cm4gcy0+c3Vic3Ry
aW5nRnJvbVJvcGUoZXhlYywgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4ganNTdWJz
dHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcy0+bV92YWx1ZSwgb2Zmc2V0LCBsZW5ndGgpOwor
ICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiA3MzE5OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcyLDggKzc3MiwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9UaGlzU3RyaW5nKGV4
ZWMpOwotICAgIGludCBsZW4gPSBzLmxlbmd0aCgpOworICAgIGludCBsZW47CisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gMDsKKyAgICBVU3RyaW5nIHVTdHJpbmc7CisgICAgaWYgKHRoaXNWYWx1
ZS5pc1N0cmluZygpKSB7CisgICAgICAgIGpzU3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcq
Pih0aGlzVmFsdWUuYXNDZWxsKCkpOworICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdVN0cmluZyA9IHRoaXNWYWx1ZS50b1RoaXNPYmplY3Qo
ZXhlYyktPnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBsZW4gPSB1U3RyaW5nLmxlbmd0aCgpOwor
ICAgIH0KIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVl
IGExID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC03ODksNyArNzk3LDExIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICB9CiAgICAgaWYgKHN0YXJ0ICsgbGVu
Z3RoID4gbGVuKQogICAgICAgICBsZW5ndGggPSBsZW4gLSBzdGFydDsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpKSk7CisgICAgdW5zaWduZWQgc3Vi
c3RyaW5nU3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOworICAgIHVuc2lnbmVk
IHN1YnN0cmluZ0xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworICAgIGlm
IChqc1N0cmluZykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhl
eGVjLCBqc1N0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWJzdHJpbmcoZXhlYywgdVN0cmluZywgc3Vic3RyaW5n
U3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC03OTcsOCAr
ODA5LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1RoaXNTdHJpbmcoZXhlYyk7Ci0gICAgaW50IGxlbiA9IHMubGVuZ3RoKCk7CisgICAgaW50
IGxlbjsKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOworICAgIFVTdHJpbmcgdVN0cmluZzsK
KyAgICBpZiAodGhpc1ZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAganNTdHJpbmcgPSBzdGF0
aWNfY2FzdDxKU1N0cmluZyo+KHRoaXNWYWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIGxlbiA9IGpz
U3RyaW5nLT5sZW5ndGgoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1U3RyaW5nID0gdGhpc1Zh
bHVlLnRvVGhpc09iamVjdChleGVjKS0+dG9TdHJpbmcoZXhlYyk7CisgICAgICAgIGxlbiA9IHVT
dHJpbmcubGVuZ3RoKCk7CisgICAgfQogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTgyMyw3ICs4NDMs
MTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICBl
bmQgPSBzdGFydDsKICAgICAgICAgc3RhcnQgPSB0ZW1wOwogICAgIH0KLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGFydCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0YXJ0KSkpOworICAgIHVuc2lnbmVkIHN1YnN0cmluZ1N0YXJ0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXJ0KTsKKyAgICB1bnNpZ25lZCBzdWJzdHJpbmdMZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW5kKSAtIHN1YnN0cmluZ1N0YXJ0OworICAgIGlmIChqc1N0cmluZykKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCBqc1N0cmluZywg
c3Vic3RyaW5nU3RhcnQsIHN1YnN0cmluZ0xlbmd0aCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdWJzdHJpbmcoZXhlYywgdVN0cmluZywgc3Vic3RyaW5nU3RhcnQsIHN1YnN0cmlu
Z0xlbmd0aCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykK
</data>
<flag name="review"
          id="66225"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>