<?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>70691</bug_id>
          
          <creation_ts>2011-10-23 05:16:56 -0700</creation_ts>
          <short_desc>BitVector isInline check could fail</short_desc>
          <delta_ts>2011-12-01 04:02:57 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yuqiang Xian">yuqiang.xian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>489007</commentid>
    <comment_count>0</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-23 05:16:56 -0700</bug_when>
    <thetext>Current BitVector uses the highest bit m_bitsOrPointer to indicate whether it&apos;s an inlined bit set or a pointer to an outOfLine bit set. This check may fail in case the pointer is also has the highest bit set, which is surely possible on IA32 (Linux). In this case the check failure can result in unexpected behaviors, for example if the BitVector is incorrectly determined as having an inlined bit set, then setting a bit exceeding maxInlineBits will wrongly modify the memory adjacent to the BitVector object, which causes hard-to-rootcause runtime errors, such as the failure of 32bit DFG Release build on Linux w/ the function inlining capability, where in DFGByteCodeParser, the bit set on m_preservedVars wrongly modifies the adjacent memory (&amp;m_parameterSlots).

One possible fix is to use the lowest bit of m_bitsOrPointer to indicate inline or outofline, based on the assumption that the pointer to OutOfLineBits should be 4 or 8 byte aligned (please correct me if we can safely make this assumption). We could mark the lowest bit (bit 0) with 1 for inlined bit set, and bits 1~bitsInPointer are used for bit set/test. In this case we need do one bit more shift for bit set/test.

Patch is forthcoming, while are there any better ideas...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489011</commentid>
    <comment_count>1</comment_count>
      <attachid>112108</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-23 05:33:46 -0700</bug_when>
    <thetext>Created attachment 112108
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489042</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-23 11:33:08 -0700</bug_when>
    <thetext>&gt; One possible fix is to use the lowest bit of m_bitsOrPointer to indicate inline or outofline, based on the assumption that the pointer to OutOfLineBits should be 4 or 8 byte aligned (please correct me if we can safely make this assumption).

I think this is a reasonable assumption.

You can do two things to make your assumption clearer to the reader:

(1) Add an ASSERT(!isInline()) at the end of BitVector::resizeOutOfLine()

(2) Add a comment above the declaration of m_bitsOrPointer explaining what the low bit means:

&quot;The low bit of m_bitsOrPointer is a flag indicating whether this field is inline bits or a pointer to out of line bits. If the flag is set, the field is inline bits. This works because the low bit in a pointer is always unset.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489043</commentid>
    <comment_count>3</comment_count>
      <attachid>112108</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-23 11:34:30 -0700</bug_when>
    <thetext>Comment on attachment 112108
proposed patch

The approach here is good, but I think a few tweaks would make this patch even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489093</commentid>
    <comment_count>4</comment_count>
      <attachid>112133</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-23 18:09:11 -0700</bug_when>
    <thetext>Created attachment 112133
the patch

Patch addressing the review comments. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489515</commentid>
    <comment_count>5</comment_count>
      <attachid>112133</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-24 12:07:14 -0700</bug_when>
    <thetext>Comment on attachment 112133
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489538</commentid>
    <comment_count>6</comment_count>
      <attachid>112133</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-24 12:40:39 -0700</bug_when>
    <thetext>Comment on attachment 112133
the patch

Clearing flags on attachment: 112133

Committed r98268: &lt;http://trac.webkit.org/changeset/98268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489539</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-24 12:40:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512557</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 00:12:21 -0800</bug_when>
    <thetext>This fix was actually wrong in two ways:

1) It adds one to the index in the bitops only in the mask part, so for example accessing bit 31 on 32-bit systems will instead access bit 0 in the first word.

2) It does not account for the &quot;lost bit&quot; in the out-of-line bit storage.

I think that the simpler fix is to:

1) Switch back to the way we did things before, since fixing both (1) and (2) seems like begging for off-by-one errors.

2) Fix the original bug by storing the out-of-line bits pointer right-shifted by 1, to make room for the is-inline marker in the top bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512572</commentid>
    <comment_count>9</comment_count>
      <attachid>117365</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 00:24:36 -0800</bug_when>
    <thetext>Created attachment 117365
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512598</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 01:01:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/10509659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512604</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 01:05:57 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/101639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512623</commentid>
    <comment_count>12</comment_count>
      <attachid>117365</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 01:38:19 -0800</bug_when>
    <thetext>Comment on attachment 117365
the patch

Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512674</commentid>
    <comment_count>13</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-12-01 04:02:57 -0800</bug_when>
    <thetext>Oops... sorry for introducing the bug...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112108</attachid>
            <date>2011-10-23 05:33:46 -0700</date>
            <delta_ts>2011-10-23 18:09:11 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>70691.patch</filename>
            <type>text/plain</type>
            <size>4610</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTgyMDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMTAtMjMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgQml0VmVjdG9yIGlzSW5saW5lIGNoZWNrIGNvdWxkIGZhaWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjkxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudCBCaXRWZWN0b3IgdXNlcyB0
aGUgaGlnaGVzdCBiaXQgbV9iaXRzT3JQb2ludGVyIHRvIGluZGljYXRlCisgICAgICAgIHdoZXRo
ZXIgaXQncyBhbiBpbmxpbmVkIGJpdCBzZXQgb3IgYSBwb2ludGVyIHRvIGFuIG91dE9mTGluZSBi
aXQgc2V0LgorICAgICAgICBUaGlzIGNoZWNrIG1heSBmYWlsIGluIGNhc2UgdGhlIHBvaW50ZXIg
aXMgYWxzbyBoYXMgdGhlIGhpZ2hlc3QgYml0IHNldCwKKyAgICAgICAgd2hpY2ggaXMgc3VyZWx5
IHBvc3NpYmxlIG9uIElBMzIgKExpbnV4KS4KKyAgICAgICAgSW4gdGhpcyBjYXNlIHRoZSBjaGVj
ayBmYWlsdXJlIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvcnMsCisgICAgICAgIGZv
ciBleGFtcGxlIGlmIHRoZSBCaXRWZWN0b3IgaXMgaW5jb3JyZWN0bHkgZGV0ZXJtaW5lZCBhcyBo
YXZpbmcgYW4KKyAgICAgICAgaW5saW5lZCBiaXQgc2V0LCB0aGVuIHNldHRpbmcgYSBiaXQgZXhj
ZWVkaW5nIG1heElubGluZUJpdHMgd2lsbCB3cm9uZ2x5CisgICAgICAgIG1vZGlmeSB0aGUgbWVt
b3J5IGFkamFjZW50IHRvIHRoZSBCaXRWZWN0b3Igb2JqZWN0LgorICAgICAgICBUaGlzIGZpeCBp
cyB0byB1c2UgdGhlIGxvd2VzdCBiaXQgb2YgbV9iaXRzT3JQb2ludGVyIHRvIGluZGljYXRlIGlu
bGluZQorICAgICAgICBvciBvdXRvZmxpbmUsIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQg
dGhlIHBvaW50ZXIgdG8gT3V0T2ZMaW5lQml0cworICAgICAgICBzaG91bGQgYmUgNCBvciA4IGJ5
dGUgYWxpZ25lZC4KKyAgICAgICAgV2UgY291bGQgbWFyayB0aGUgbG93ZXN0IGJpdCAoYml0IDAp
IHdpdGggMSBmb3IgaW5saW5lZCBiaXQgc2V0LAorICAgICAgICBhbmQgYml0cyAxfmJpdHNJblBv
aW50ZXIgYXJlIHVzZWQgZm9yIGJpdCBzZXQvdGVzdC4KKyAgICAgICAgSW4gdGhpcyBjYXNlIHdl
IG5lZWQgZG8gb25lIGJpdCBtb3JlIHNoaWZ0IGZvciBiaXQgc2V0L3Rlc3QuCisKKyAgICAgICAg
KiB3dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjpyZXNpemVPdXRP
ZkxpbmUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6Qml0VmVj
dG9yOjpxdWlja0dldCk6CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6cXVpY2tTZXQpOgorICAg
ICAgICAoV1RGOjpCaXRWZWN0b3I6OnF1aWNrQ2xlYXIpOgorICAgICAgICAoV1RGOjpCaXRWZWN0
b3I6Om1ha2VJbmxpbmVCaXRzKToKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjppc0lubGluZSk6
CisKIDIwMTEtMTAtMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUcnkgdG8gZml4IHRoZSBTTCBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0JpdFZlY3Rvci5jcHAJKHJldmlzaW9uIDk4MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9CaXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgQml0VmVjdG9yOjpyZXNpemVPdXRPZkxpbmUoc2l6ZV90IG4KICAgICBPdXRPZkxpbmVCaXRz
KiBuZXdPdXRPZkxpbmVCaXRzID0gT3V0T2ZMaW5lQml0czo6Y3JlYXRlKG51bUJpdHMpOwogICAg
IGlmIChpc0lubGluZSgpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGUg
Yml0cyBhcmUgemVybyBpbiBjYXNlIHdlIGRvIGEgbm8tb3AgcmVzaXplLgotICAgICAgICAqbmV3
T3V0T2ZMaW5lQml0cy0+Yml0cygpID0gbV9iaXRzT3JQb2ludGVyICYgfihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpIDw8IG1heElubGluZUJpdHMoKSk7CisgICAgICAgICpuZXdPdXRPZkxpbmVC
aXRzLT5iaXRzKCkgPSBtX2JpdHNPclBvaW50ZXIgJiB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChudW1CaXRzID4gc2l6ZSgpKSB7CiAgICAg
ICAgICAgICBzaXplX3Qgb2xkTnVtV29yZHMgPSBvdXRPZkxpbmVCaXRzKCktPm51bVdvcmRzKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDk4MjAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CaXRWZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDE5ICsxMTQsMTkgQEAgcHVibGljOgogICAgIGJvb2wgcXVpY2tHZXQoc2l6ZV90
IGJpdCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChiaXQgPCBzaXplKCkpOwotICAgICAg
ICByZXR1cm4gISEoYml0cygpW2JpdCAvIGJpdHNJblBvaW50ZXIoKV0gJiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSA8PCAoYml0ICYgKGJpdHNJblBvaW50ZXIoKSAtIDEpKSkpOworICAgICAg
ICByZXR1cm4gISEoYml0cygpW2JpdCAvIGJpdHNJblBvaW50ZXIoKV0gJiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSA8PCAoKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAxKSkgKyAxKSkpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIHF1aWNrU2V0KHNpemVfdCBiaXQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoYml0IDwgc2l6ZSgpKTsKLSAgICAgICAgYml0cygpW2JpdCAvIGJpdHNJblBvaW50
ZXIoKV0gfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2lu
dGVyKCkgLSAxKSkpOworICAgICAgICBiaXRzKClbYml0IC8gYml0c0luUG9pbnRlcigpXSB8PSAo
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAoKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAx
KSkgKyAxKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgcXVpY2tDbGVhcihzaXplX3QgYml0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGJpdCA8IHNpemUoKSk7Ci0gICAgICAgIGJpdHMoKVtiaXQg
LyBiaXRzSW5Qb2ludGVyKCldICY9IH4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAoYml0
ICYgKGJpdHNJblBvaW50ZXIoKSAtIDEpKSk7CisgICAgICAgIGJpdHMoKVtiaXQgLyBiaXRzSW5Q
b2ludGVyKCldICY9IH4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAoKGJpdCAmIChiaXRz
SW5Qb2ludGVyKCkgLSAxKSkgKyAxKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgcXVpY2tTZXQo
c2l6ZV90IGJpdCwgYm9vbCB2YWx1ZSkKQEAgLTE4Nyw4ICsxODcsOCBAQCBwcml2YXRlOgogICAg
IAogICAgIHN0YXRpYyB1aW50cHRyX3QgbWFrZUlubGluZUJpdHModWludHB0cl90IGJpdHMpCiAg
ICAgewotICAgICAgICBBU1NFUlQoIShiaXRzICYgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkg
PDwgbWF4SW5saW5lQml0cygpKSkpOwotICAgICAgICByZXR1cm4gYml0cyB8IChzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpIDw8IG1heElubGluZUJpdHMoKSk7CisgICAgICAgIEFTU0VSVCghKGJp
dHMgJiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSk7CisgICAgICAgIHJldHVybiBiaXRzIHwg
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKTsKICAgICB9CiAgICAgCiAgICAgY2xhc3MgT3V0T2ZM
aW5lQml0cyB7CkBAIC0yMTEsNyArMjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IG1f
bnVtQml0czsKICAgICB9OwogICAgIAotICAgIGJvb2wgaXNJbmxpbmUoKSBjb25zdCB7IHJldHVy
biBtX2JpdHNPclBvaW50ZXIgPj4gbWF4SW5saW5lQml0cygpOyB9CisgICAgYm9vbCBpc0lubGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0c09yUG9pbnRlciAmIHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSk7IH0KICAgICAKICAgICBjb25zdCBPdXRPZkxpbmVCaXRzKiBvdXRPZkxpbmVCaXRzKCkg
Y29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IE91dE9mTGluZUJpdHMqPihtX2JpdHNP
clBvaW50ZXIpOyB9CiAgICAgT3V0T2ZMaW5lQml0cyogb3V0T2ZMaW5lQml0cygpIHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxPdXRPZkxpbmVCaXRzKj4obV9iaXRzT3JQb2ludGVyKTsgfQo=
</data>
<flag name="review"
          id="110105"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112133</attachid>
            <date>2011-10-23 18:09:11 -0700</date>
            <delta_ts>2011-12-01 00:24:36 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>70691.patch</filename>
            <type>text/plain</type>
            <size>5273</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTgyMDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMTAtMjMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgQml0VmVjdG9yIGlzSW5saW5lIGNoZWNrIGNvdWxkIGZhaWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjkxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudCBCaXRWZWN0b3IgdXNlcyB0
aGUgaGlnaGVzdCBiaXQgb2YgbV9iaXRzT3JQb2ludGVyIHRvIGluZGljYXRlCisgICAgICAgIHdo
ZXRoZXIgaXQncyBhbiBpbmxpbmVkIGJpdCBzZXQgb3IgYSBwb2ludGVyIHRvIGFuIG91dE9mTGlu
ZSBiaXQgc2V0LgorICAgICAgICBUaGlzIGNoZWNrIG1heSBmYWlsIGluIGNhc2UgdGhlIHBvaW50
ZXIgYWxzbyBoYXMgdGhlIGhpZ2hlc3QgYml0IHNldCwKKyAgICAgICAgd2hpY2ggaXMgc3VyZWx5
IHBvc3NpYmxlIG9uIElBMzIgKExpbnV4KS4KKyAgICAgICAgSW4gdGhpcyBjYXNlIHRoZSBjaGVj
ayBmYWlsdXJlIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvcnMsCisgICAgICAgIGZv
ciBleGFtcGxlIGlmIHRoZSBCaXRWZWN0b3IgaXMgaW5jb3JyZWN0bHkgZGV0ZXJtaW5lZCBhcyBo
YXZpbmcgYW4KKyAgICAgICAgaW5saW5lZCBiaXQgc2V0LCB0aGVuIHNldHRpbmcgYSBiaXQgZXhj
ZWVkaW5nIG1heElubGluZUJpdHMgd2lsbCB3cm9uZ2x5CisgICAgICAgIG1vZGlmeSB0aGUgbWVt
b3J5IGFkamFjZW50IHRvIHRoZSBCaXRWZWN0b3Igb2JqZWN0LgorICAgICAgICBUaGlzIGZpeCBp
cyB0byB1c2UgdGhlIGxvd2VzdCBiaXQgb2YgbV9iaXRzT3JQb2ludGVyIHRvIGluZGljYXRlIGlu
bGluZQorICAgICAgICBvciBvdXRvZmxpbmUsIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQg
dGhlIHBvaW50ZXIgdG8gT3V0T2ZMaW5lQml0cworICAgICAgICBzaG91bGQgYmUgNCBvciA4IGJ5
dGUgYWxpZ25lZC4KKyAgICAgICAgV2UgY291bGQgbWFyayB0aGUgbG93ZXN0IGJpdCAoYml0IDAp
IHdpdGggMSBmb3IgaW5saW5lZCBiaXQgc2V0LAorICAgICAgICBhbmQgYml0cyAxfmJpdHNJblBv
aW50ZXIgYXJlIHVzZWQgZm9yIGJpdCBzZXQvdGVzdC4KKyAgICAgICAgSW4gdGhpcyBjYXNlIHdl
IG5lZWQgZG8gb25lIGJpdCBtb3JlIHNoaWZ0IGZvciBiaXQgc2V0L3Rlc3QuCisKKyAgICAgICAg
KiB3dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjpyZXNpemVPdXRP
ZkxpbmUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6Qml0VmVj
dG9yOjpxdWlja0dldCk6CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6cXVpY2tTZXQpOgorICAg
ICAgICAoV1RGOjpCaXRWZWN0b3I6OnF1aWNrQ2xlYXIpOgorICAgICAgICAoV1RGOjpCaXRWZWN0
b3I6Om1ha2VJbmxpbmVCaXRzKToKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjppc0lubGluZSk6
CisKIDIwMTEtMTAtMjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgZGVsZXRlUHJvcGVydHkgdG8gdGhlIE1ldGhvZFRhYmxlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CaXRWZWN0b3IuY3BwCShyZXZpc2lvbiA5ODIwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNyBAQCB2b2lkIEJpdFZlY3Rvcjo6cmVzaXplT3V0T2ZMaW5lKHNpemVfdCBu
CiAgICAgT3V0T2ZMaW5lQml0cyogbmV3T3V0T2ZMaW5lQml0cyA9IE91dE9mTGluZUJpdHM6OmNy
ZWF0ZShudW1CaXRzKTsKICAgICBpZiAoaXNJbmxpbmUoKSkgewogICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCBhbGwgb2YgdGhlIGJpdHMgYXJlIHplcm8gaW4gY2FzZSB3ZSBkbyBhIG5vLW9wIHJl
c2l6ZS4KLSAgICAgICAgKm5ld091dE9mTGluZUJpdHMtPmJpdHMoKSA9IG1fYml0c09yUG9pbnRl
ciAmIH4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCBtYXhJbmxpbmVCaXRzKCkpOworICAg
ICAgICAqbmV3T3V0T2ZMaW5lQml0cy0+Yml0cygpID0gbV9iaXRzT3JQb2ludGVyICYgfihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobnVtQml0
cyA+IHNpemUoKSkgewogICAgICAgICAgICAgc2l6ZV90IG9sZE51bVdvcmRzID0gb3V0T2ZMaW5l
Qml0cygpLT5udW1Xb3JkcygpOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHZvaWQgQml0VmVjdG9yOjpy
ZXNpemVPdXRPZkxpbmUoc2l6ZV90IG4KICAgICAgICAgT3V0T2ZMaW5lQml0czo6ZGVzdHJveShv
dXRPZkxpbmVCaXRzKCkpOwogICAgIH0KICAgICBtX2JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihuZXdPdXRPZkxpbmVCaXRzKTsKKyAgICBBU1NFUlQoIWlzSW5saW5lKCkp
OwogfQogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9C
aXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZl
Y3Rvci5oCShyZXZpc2lvbiA5ODIwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0
VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxOSArMTE0LDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIHF1aWNrR2V0KHNpemVfdCBiaXQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
Yml0IDwgc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuICEhKGJpdHMoKVtiaXQgLyBiaXRzSW5Qb2lu
dGVyKCldICYgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2lu
dGVyKCkgLSAxKSkpKTsKKyAgICAgICAgcmV0dXJuICEhKGJpdHMoKVtiaXQgLyBiaXRzSW5Qb2lu
dGVyKCldICYgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKChiaXQgJiAoYml0c0luUG9p
bnRlcigpIC0gMSkpICsgMSkpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBxdWlja1NldChzaXpl
X3QgYml0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGJpdCA8IHNpemUoKSk7Ci0gICAgICAgIGJp
dHMoKVtiaXQgLyBiaXRzSW5Qb2ludGVyKCldIHw9IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
IDw8IChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpKTsKKyAgICAgICAgYml0cygpW2JpdCAv
IGJpdHNJblBvaW50ZXIoKV0gfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKChiaXQg
JiAoYml0c0luUG9pbnRlcigpIC0gMSkpICsgMSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHF1
aWNrQ2xlYXIoc2l6ZV90IGJpdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChiaXQgPCBzaXplKCkp
OwotICAgICAgICBiaXRzKClbYml0IC8gYml0c0luUG9pbnRlcigpXSAmPSB+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAxKSkpOworICAgICAg
ICBiaXRzKClbYml0IC8gYml0c0luUG9pbnRlcigpXSAmPSB+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkgPDwgKChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpICsgMSkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHF1aWNrU2V0KHNpemVfdCBiaXQsIGJvb2wgdmFsdWUpCkBAIC0xODcsOCAr
MTg3LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBzdGF0aWMgdWludHB0cl90IG1ha2VJbmxpbmVC
aXRzKHVpbnRwdHJfdCBiaXRzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYml0cyAmIChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IG1heElubGluZUJpdHMoKSkpKTsKLSAgICAgICAgcmV0
dXJuIGJpdHMgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCBtYXhJbmxpbmVCaXRzKCkp
OworICAgICAgICBBU1NFUlQoIShiaXRzICYgc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwor
ICAgICAgICByZXR1cm4gYml0cyB8IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSk7CiAgICAgfQog
ICAgIAogICAgIGNsYXNzIE91dE9mTGluZUJpdHMgewpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHNpemVfdCBtX251bUJpdHM7CiAgICAgfTsKICAgICAKLSAgICBib29sIGlz
SW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzT3JQb2ludGVyID4+IG1heElubGluZUJpdHMo
KTsgfQorICAgIGJvb2wgaXNJbmxpbmUoKSBjb25zdCB7IHJldHVybiBtX2JpdHNPclBvaW50ZXIg
JiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpOyB9CiAgICAgCiAgICAgY29uc3QgT3V0T2ZMaW5l
Qml0cyogb3V0T2ZMaW5lQml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBP
dXRPZkxpbmVCaXRzKj4obV9iaXRzT3JQb2ludGVyKTsgfQogICAgIE91dE9mTGluZUJpdHMqIG91
dE9mTGluZUJpdHMoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T3V0T2ZMaW5lQml0cyo+KG1fYml0
c09yUG9pbnRlcik7IH0KQEAgLTIzMiw3ICsyMzIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybiAmbV9iaXRzT3JQb2ludGVyOwogICAgICAgICByZXR1cm4gb3V0T2ZMaW5lQml0cygp
LT5iaXRzKCk7CiAgICAgfQotICAgIAorCisgICAgLy8gVGhlIGxvdyBiaXQgb2YgbV9iaXRzT3JQ
b2ludGVyIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBmaWVsZCBpcworICAgIC8v
IGlubGluZSBiaXRzIG9yIGEgcG9pbnRlciB0byBvdXQgb2YgbGluZSBiaXRzLiBJZiB0aGUgZmxh
ZyBpcyBzZXQsIHRoZSBmaWVsZAorICAgIC8vIGlzIGlubGluZSBiaXRzLiBUaGlzIHdvcmtzIGJl
Y2F1c2UgdGhlIGxvdyBiaXQgaW4gYSBwb2ludGVyIGlzIGFsd2F5cyB1bnNldC4KICAgICB1aW50
cHRyX3QgbV9iaXRzT3JQb2ludGVyOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117365</attachid>
            <date>2011-12-01 00:24:36 -0800</date>
            <delta_ts>2011-12-01 01:38:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixbitvector_patch_1.diff</filename>
            <type>text/plain</type>
            <size>6147</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxNjMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDExLTEyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Qml0VmVjdG9yIGlzSW5saW5lIGNoZWNrIGNvdWxkIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTd2l0Y2ggYmFjayB0byB1c2luZyB0
aGUgaGlnaCBiaXQgYXMgdGhlIGlubGluZSBtYXJrZXIsIHRvIG1ha2UKKyAgICAgICAgYWxsIG9m
IHRoZSBiaXQgaW5kZXhpbmcgb3BlcmF0aW9ucyBzaW1wbGVyLiBDb21wdXRpbmcgdGhlIHNpemUg
aW4KKyAgICAgICAgd29yZHMgYW5kIGluIGJ5dGVzIG9mIGEgYml0dmVjdG9yLCB1c2luZyB0aGUg
bnVtYmVyIG9mIGJpdHMgYXMKKyAgICAgICAgaW5wdXQgaXMgZXJyb3ItcHJvbmUgZW5vdWdoOyBh
bmQgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaCB0bworICAgICAgICBzb2x2aW5nIHRoZSBYODYg
YnVnIHdlIGVuZCB1cCBnZXR0aW5nIGl0IHdyb25nLiBNYWtpbmcgaXQgcmlnaHQKKyAgICAgICAg
c2VlbXMgaGFyZC4KKyAgICAgICAgCisgICAgICAgIFNvIGluc3RlYWQsIHRvIHNvbHZlIHRoZSBv
cmlnaW5hbCBwcm9ibGVtICh0aGUgaGlnaCBiaXQgbWF5IGJlCisgICAgICAgIG1lYW5pbmdmdWwg
b24gMzItYml0IHN5c3RlbXMpLCB0aGUgb3V0LW9mLWxpbmUgc3RvcmFnZSBwb2ludGVyIGlzCisg
ICAgICAgIHJpZ2h0LXNoaWZ0ZWQgYnkgMS4gQ29tcGFyZWQgdG8gdGhlIG9yaWdpbmFsIEJpdFZl
Y3RvciBjb2RlLCB0aGlzCisgICAgICAgIGlzIGEgbXVjaCBzbWFsbGVyIGNoYW5nZSAoanVzdCB0
aHJlZSBsaW5lcykuCisgICAgICAgIAorICAgICAgICBUaGlzIHNvbHZlcyBhIGJ1ZyB3aGVyZSB0
aGUgREZHIHdhcyBjb3JydXB0aW5nIGl0cyBjYWxsIGZyYW1lCisgICAgICAgIGJlY2F1c2UgQml0
VmVjdG9yIGxvc3QgdHJhY2sgb2Ygc29tZSBiaXRzLgorCisgICAgICAgICogd3RmL0JpdFZlY3Rv
ci5jcHA6CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6c2V0U2xvdyk6CisgICAgICAgIChXVEY6
OkJpdFZlY3Rvcjo6cmVzaXplT3V0T2ZMaW5lKToKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmg6
CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6cXVpY2tHZXQpOgorICAgICAgICAoV1RGOjpCaXRW
ZWN0b3I6OnF1aWNrU2V0KToKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjpxdWlja0NsZWFyKToK
KyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjptYWtlSW5saW5lQml0cyk6CisgICAgICAgIChXVEY6
OkJpdFZlY3Rvcjo6aXNJbmxpbmUpOgorICAgICAgICAoV1RGOjpCaXRWZWN0b3I6Om91dE9mTGlu
ZUJpdHMpOgorCiAyMDExLTExLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgREZHIHNob3VsZCBtYWtlIGl0IGVhc2llciB0byBub3RpY2Ugbm9kZSBib3VuZGFy
aWVzIGluIGRpc2Fzc2VtYmx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZl
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CaXRWZWN0
b3IuY3BwCShyZXZpc2lvbiAxMDE0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Jp
dFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBCaXRWZWN0
b3I6OnNldFNsb3coY29uc3QgQml0VmVjdG9yJgogICAgIGVsc2UgewogICAgICAgICBPdXRPZkxp
bmVCaXRzKiBuZXdPdXRPZkxpbmVCaXRzID0gT3V0T2ZMaW5lQml0czo6Y3JlYXRlKG90aGVyLnNp
emUoKSk7CiAgICAgICAgIG1lbWNweShuZXdPdXRPZkxpbmVCaXRzLT5iaXRzKCksIG90aGVyLmJp
dHMoKSwgYnl0ZUNvdW50KG90aGVyLnNpemUoKSkpOwotICAgICAgICBuZXdCaXRzT3JQb2ludGVy
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obmV3T3V0T2ZMaW5lQml0cyk7CisgICAgICAgIG5l
d0JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihuZXdPdXRPZkxpbmVCaXRz
KSA+PiAxOwogICAgIH0KICAgICBpZiAoIWlzSW5saW5lKCkpCiAgICAgICAgIE91dE9mTGluZUJp
dHM6OmRlc3Ryb3kob3V0T2ZMaW5lQml0cygpKTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBCaXRW
ZWN0b3I6OnJlc2l6ZU91dE9mTGluZShzaXplX3QgbgogICAgIE91dE9mTGluZUJpdHMqIG5ld091
dE9mTGluZUJpdHMgPSBPdXRPZkxpbmVCaXRzOjpjcmVhdGUobnVtQml0cyk7CiAgICAgaWYgKGlz
SW5saW5lKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZSBiaXRzIGFy
ZSB6ZXJvIGluIGNhc2Ugd2UgZG8gYSBuby1vcCByZXNpemUuCi0gICAgICAgICpuZXdPdXRPZkxp
bmVCaXRzLT5iaXRzKCkgPSBtX2JpdHNPclBvaW50ZXIgJiB+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkpOworICAgICAgICAqbmV3T3V0T2ZMaW5lQml0cy0+Yml0cygpID0gbV9iaXRzT3JQb2lu
dGVyICYgfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IG1heElubGluZUJpdHMoKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG51bUJpdHMgPiBzaXplKCkpIHsKICAgICAgICAgICAg
IHNpemVfdCBvbGROdW1Xb3JkcyA9IG91dE9mTGluZUJpdHMoKS0+bnVtV29yZHMoKTsKQEAgLTEw
Miw4ICsxMDIsNyBAQCB2b2lkIEJpdFZlY3Rvcjo6cmVzaXplT3V0T2ZMaW5lKHNpemVfdCBuCiAg
ICAgICAgICAgICBtZW1jcHkobmV3T3V0T2ZMaW5lQml0cy0+Yml0cygpLCBvdXRPZkxpbmVCaXRz
KCktPmJpdHMoKSwgbmV3T3V0T2ZMaW5lQml0cy0+bnVtV29yZHMoKSAqIHNpemVvZih2b2lkKikp
OwogICAgICAgICBPdXRPZkxpbmVCaXRzOjpkZXN0cm95KG91dE9mTGluZUJpdHMoKSk7CiAgICAg
fQotICAgIG1fYml0c09yUG9pbnRlciA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5ld091dE9m
TGluZUJpdHMpOwotICAgIEFTU0VSVCghaXNJbmxpbmUoKSk7CisgICAgbV9iaXRzT3JQb2ludGVy
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obmV3T3V0T2ZMaW5lQml0cykgPj4gMTsKIH0KIAog
I2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CaXRWZWN0b3IuaAko
cmV2aXNpb24gMTAxNDU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CaXRWZWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDE5ICsxMTQsMTkgQEAgcHVibGljOiAKICAgICBib29s
IHF1aWNrR2V0KHNpemVfdCBiaXQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoYml0IDwg
c2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuICEhKGJpdHMoKVtiaXQgLyBiaXRzSW5Qb2ludGVyKCld
ICYgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKChiaXQgJiAoYml0c0luUG9pbnRlcigp
IC0gMSkpICsgMSkpKTsKKyAgICAgICAgcmV0dXJuICEhKGJpdHMoKVtiaXQgLyBiaXRzSW5Qb2lu
dGVyKCldICYgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2lu
dGVyKCkgLSAxKSkpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBxdWlja1NldChzaXplX3QgYml0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGJpdCA8IHNpemUoKSk7Ci0gICAgICAgIGJpdHMoKVti
aXQgLyBiaXRzSW5Qb2ludGVyKCldIHw9IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8ICgo
Yml0ICYgKGJpdHNJblBvaW50ZXIoKSAtIDEpKSArIDEpKTsKKyAgICAgICAgYml0cygpW2JpdCAv
IGJpdHNJblBvaW50ZXIoKV0gfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAm
IChiaXRzSW5Qb2ludGVyKCkgLSAxKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHF1aWNrQ2xl
YXIoc2l6ZV90IGJpdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChiaXQgPCBzaXplKCkpOwotICAg
ICAgICBiaXRzKClbYml0IC8gYml0c0luUG9pbnRlcigpXSAmPSB+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkgPDwgKChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpICsgMSkpOworICAgICAg
ICBiaXRzKClbYml0IC8gYml0c0luUG9pbnRlcigpXSAmPSB+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAxKSkpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIHF1aWNrU2V0KHNpemVfdCBiaXQsIGJvb2wgdmFsdWUpCkBAIC0xODcsOCArMTg3LDgg
QEAgcHJpdmF0ZToKICAgICAKICAgICBzdGF0aWMgdWludHB0cl90IG1ha2VJbmxpbmVCaXRzKHVp
bnRwdHJfdCBiaXRzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYml0cyAmIHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpKTsKLSAgICAgICAgcmV0dXJuIGJpdHMgfCBzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpOworICAgICAgICBBU1NFUlQoIShiaXRzICYgKHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkgPDwgbWF4SW5saW5lQml0cygpKSkpOworICAgICAgICByZXR1cm4gYml0cyB8IChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IG1heElubGluZUJpdHMoKSk7CiAgICAgfQogICAgIAog
ICAgIGNsYXNzIE91dE9mTGluZUJpdHMgewpAQCAtMjExLDEwICsyMTEsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgc2l6ZV90IG1fbnVtQml0czsKICAgICB9OwogICAgIAotICAgIGJvb2wgaXNJbmxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2JpdHNPclBvaW50ZXIgJiBzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpOyB9CisgICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0c09yUG9p
bnRlciA+PiBtYXhJbmxpbmVCaXRzKCk7IH0KICAgICAKLSAgICBjb25zdCBPdXRPZkxpbmVCaXRz
KiBvdXRPZkxpbmVCaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IE91dE9m
TGluZUJpdHMqPihtX2JpdHNPclBvaW50ZXIpOyB9Ci0gICAgT3V0T2ZMaW5lQml0cyogb3V0T2ZM
aW5lQml0cygpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxPdXRPZkxpbmVCaXRzKj4obV9iaXRzT3JQ
b2ludGVyKTsgfQorICAgIGNvbnN0IE91dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgT3V0T2ZMaW5lQml0cyo+KG1fYml0c09yUG9p
bnRlciA8PCAxKTsgfQorICAgIE91dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMoKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8T3V0T2ZMaW5lQml0cyo+KG1fYml0c09yUG9pbnRlciA8PCAxKTsgfQog
ICAgIAogICAgIHZvaWQgcmVzaXplT3V0T2ZMaW5lKHNpemVfdCBudW1CaXRzKTsKICAgICB2b2lk
IHNldFNsb3coY29uc3QgQml0VmVjdG9yJiBvdGhlcik7CkBAIC0yMzIsMTAgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gJm1fYml0c09yUG9pbnRlcjsKICAgICAgICAgcmV0
dXJuIG91dE9mTGluZUJpdHMoKS0+Yml0cygpOwogICAgIH0KLQotICAgIC8vIFRoZSBsb3cgYml0
IG9mIG1fYml0c09yUG9pbnRlciBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgZmll
bGQgaXMKLSAgICAvLyBpbmxpbmUgYml0cyBvciBhIHBvaW50ZXIgdG8gb3V0IG9mIGxpbmUgYml0
cy4gSWYgdGhlIGZsYWcgaXMgc2V0LCB0aGUgZmllbGQKLSAgICAvLyBpcyBpbmxpbmUgYml0cy4g
VGhpcyB3b3JrcyBiZWNhdXNlIHRoZSBsb3cgYml0IGluIGEgcG9pbnRlciBpcyBhbHdheXMgdW5z
ZXQuCisgICAgCiAgICAgdWludHB0cl90IG1fYml0c09yUG9pbnRlcjsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>