<?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>90319</bug_id>
          
          <creation_ts>2012-06-29 15:50:35 -0700</creation_ts>
          <short_desc>Make TextCodecLatin1 handle 8 bit data without converting to UChar&apos;s</short_desc>
          <delta_ts>2012-07-18 13:22:54 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90320</blocked>
    
    <blocked>90321</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660837</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-06-29 15:50:35 -0700</bug_when>
    <thetext>Most of the Latin-1 tagged resources on the web can be processed as 8-bit data using 8-bit strings.  The task is to modify TextCodecLatin1 and related code to return strings appropriate for the source data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667279</commentid>
    <comment_count>1</comment_count>
      <attachid>151833</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-07-11 18:18:46 -0700</bug_when>
    <thetext>Created attachment 151833
Patch for Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671410</commentid>
    <comment_count>2</comment_count>
      <attachid>151833</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-07-17 11:08:04 -0700</bug_when>
    <thetext>Comment on attachment 151833
Patch for Review

View in context: https://bugs.webkit.org/attachment.cgi?id=151833&amp;action=review

&gt; Source/WebCore/platform/text/TextCodecASCIIFastPath.h:43
&gt; +    static void copy(LChar* destination, const uint8_t* source)
&gt; +    {
&gt; +        destination[0] = source[0];
&gt; +        destination[1] = source[1];
&gt; +        destination[2] = source[2];
&gt; +        destination[3] = source[3];
&gt; +    }
&gt; +    

What does the assembly for this look like?

&gt; Source/WebCore/platform/text/TextCodecASCIIFastPath.h:62
&gt; +        destination[0] = source[0];
&gt; +        destination[1] = source[1];
&gt; +        destination[2] = source[2];
&gt; +        destination[3] = source[3];
&gt; +        destination[4] = source[4];
&gt; +        destination[5] = source[5];
&gt; +        destination[6] = source[6];
&gt; +        destination[7] = source[7];

ditto

&gt; Source/WebCore/platform/text/TextCodecLatin1.cpp:172
&gt; +    while (characters &lt; destination)

This condition is really confusing to me, what on earth is destination?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672492</commentid>
    <comment_count>3</comment_count>
      <attachid>153039</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-07-18 10:26:25 -0700</bug_when>
    <thetext>Created attachment 153039
Patch with updates from review

(In reply to comment #2)
&gt; (From update of attachment 151833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151833&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/TextCodecASCIIFastPath.h:43
&gt; &gt; +    static void copy(LChar* destination, const uint8_t* source)
&gt; &gt; +    {
&gt; &gt; +        destination[0] = source[0];
&gt; &gt; +        destination[1] = source[1];
&gt; &gt; +        destination[2] = source[2];
&gt; &gt; +        destination[3] = source[3];
&gt; &gt; +    }
&gt; &gt; +    
&gt; 
&gt; What does the assembly for this look like?
&gt; 
&gt; &gt; Source/WebCore/platform/text/TextCodecASCIIFastPath.h:62
&gt; &gt; +        destination[0] = source[0];
&gt; &gt; +        destination[1] = source[1];
&gt; &gt; +        destination[2] = source[2];
&gt; &gt; +        destination[3] = source[3];
&gt; &gt; +        destination[4] = source[4];
&gt; &gt; +        destination[5] = source[5];
&gt; &gt; +        destination[6] = source[6];
&gt; &gt; +        destination[7] = source[7];
&gt; 
&gt; ditto

Changed both of these explicit copies to memcpy(destination, source, &lt;4 or 8&gt;)

For Mac 64 bit with these changes, the compiler generated:
    mov    (%r12),%rdx
    ...
    mov    %rdx,(%r15)

&gt; 
&gt; &gt; Source/WebCore/platform/text/TextCodecLatin1.cpp:172
&gt; &gt; +    while (characters &lt; destination)
&gt; 
&gt; This condition is really confusing to me, what on earth is destination?

Changed this to:

    // Zero extend and copy already processed 8 bit data
    LChar* ptr8 = characters;
    LChar* endPtr8 = destination;

    while (ptr8 &lt; endPtr8)
        *destination16++ = *ptr8++;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672689</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-07-18 13:22:54 -0700</bug_when>
    <thetext>Committed r123008: &lt;http://trac.webkit.org/changeset/123008&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151833</attachid>
            <date>2012-07-11 18:18:46 -0700</date>
            <delta_ts>2012-07-18 10:26:25 -0700</delta_ts>
            <desc>Patch for Review</desc>
            <filename>90319.patch</filename>
            <type>text/plain</type>
            <size>8452</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjIzOTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTExICBNaWNoYWVsIFNhYm9mZiAgPG1z
YWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVGV4dENvZGVjTGF0aW4xIGhhbmRsZSA4
IGJpdCBkYXRhIHdpdGhvdXQgY29udmVydGluZyB0byBVQ2hhcidzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6IEV4cG9ydGVkIExDaGFyIHZhcmlhbnQgb2YgYWRvcHQoKS4K
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpj
cmVhdGVVbmluaXRpYWxpemVkKTogRXhwb3J0ZWQgTENoYXIgdmFyaWFudC4KKwogMjAxMi0wNy0x
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAt
V3RhdXRvbG9naWNhbC1jb21wYXJlIGFuZCAtV3NpZ24tY29tcGFyZSB3YXJuaW5nIGZsYWdzCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbChyZXAt
Pm1fZGF0YTE2ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgsIExDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBM
Q2hhciomIGRhdGEpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBk
YXRhKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEFMV0FZU19JTkxJTkUgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCwgVComIG91dHB1dCkKICAgICB7CkBAIC0zMzYsOCArMzM2LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZW1wdHkoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8
VUNoYXI+JiBidWZmZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+Jik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZl
cjxMQ2hhcj4mKTsKIAogI2lmIFBMQVRGT1JNKFFUKSAmJiBIQVZFKFFUNSkKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChRU3RyaW5nRGF0YSopOwpJbmRleDogU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNiArMzIxLDcgQEAgcHVibGljOgog
ICAgIC8vIGludG8gdGhlIGJ1ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJu
ZWQgc3RyaW5nIGlzIHVzZWQuCiAgICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1
bnByZWRpY3RhYmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJu
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MjM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTA3LTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgVGV4dENvZGVjTGF0aW4xIGhhbmRsZSA4IGJpdCBkYXRhIHdpdGhv
dXQgY29udmVydGluZyB0byBVQ2hhcidzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgY29kZWMgdG8gY3JlYXRlIDggYml0IHN0cmluZ3Mgd2hl
cmUgcG9zc2libGUuCisgICAgICAgIFdlIGFzc3VtZSB0aGF0IHRoZSBpbmNvbWluZyBzdHJlYW0g
Y2FuIGFsbCBiZSBkZWNvZGVkIGFzIDgtYml0IHZhbHVlcy4KKyAgICAgICAgSWYgd2UgZmluZCBh
IDE2LWJpdCB2YWx1ZSwgd2UgdGFrZSB0aGUgYWxyZWFkeSBkZWNvZGVkIGRhdGEgYW5kCisgICAg
ICAgIGNvcHkgLyBjb252ZXJ0IGl0IHRvIGEgMTYtYml0IGJ1ZmZlciBhbmQgdGhlbiBjb250aW51
ZSBwcm9jZXNzIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBzdHJlYW0gYXMgMTYtYml0cy4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGZ1bmN0aW9uYWxpdHkgY292ZXJlZCB3aXRoIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNBU0NJSUZhc3RQYXRo
Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb3B5QVNDSUlNYWNoaW5lV29yZCk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjTGF0aW4xOjpkZWNvZGUpOgorCiAyMDEyLTA3LTExICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4gCiAKICAgICAgICAgU1ZHVXNlRWxlbWVudCBzaG91bGQgbm90
IHVzZSBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaAkocmV2aXNp
b24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNBU0NJ
SUZhc3RQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdGVtcGxhdGU8c2l6ZV90IHNpemU+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI8ND4geworICAgIHN0YXRpYyB2b2lk
IGNvcHkoTENoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiBzb3VyY2UpCisgICAgewor
ICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25b
MV0gPSBzb3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICB9CisgICAgCiAgICAgc3RhdGlj
IHZvaWQgY29weShVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSkKICAg
ICB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwpAQCAtNDIsNiArNTAsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVUNoYXJCeXRlRmlsbGVyPDQ+IHsKICAgICB9CiB9OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgVUNoYXJCeXRlRmlsbGVyPDg+IHsKKyAgICBzdGF0aWMgdm9pZCBjb3B5
KExDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdCogc291cmNlKQorICAgIHsKKyAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bM10gPSBzb3VyY2VbM107CisgICAgICAgIGRlc3RpbmF0aW9uWzRdID0gc291
cmNlWzRdOworICAgICAgICBkZXN0aW5hdGlvbls1XSA9IHNvdXJjZVs1XTsKKyAgICAgICAgZGVz
dGluYXRpb25bNl0gPSBzb3VyY2VbNl07CisgICAgICAgIGRlc3RpbmF0aW9uWzddID0gc291cmNl
WzddOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIGNvcHkoVUNoYXIqIGRlc3RpbmF0aW9uLCBj
b25zdCB1aW50OF90KiBzb3VyY2UpCiAgICAgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXTsKQEAgLTU1LDYgKzc1LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IFVDaGFyQnl0ZUZp
bGxlcjw4PiB7CiAgICAgfQogfTsKIAoraW5saW5lIHZvaWQgY29weUFTQ0lJTWFjaGluZVdvcmQo
TENoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiBzb3VyY2UpCit7CisgICAgVUNoYXJC
eXRlRmlsbGVyPHNpemVvZihXVEY6Ok1hY2hpbmVXb3JkKT46OmNvcHkoZGVzdGluYXRpb24sIHNv
dXJjZSk7Cit9CisKIGlubGluZSB2b2lkIGNvcHlBU0NJSU1hY2hpbmVXb3JkKFVDaGFyKiBkZXN0
aW5hdGlvbiwgY29uc3QgdWludDhfdCogc291cmNlKQogewogICAgIFVDaGFyQnl0ZUZpbGxlcjxz
aXplb2YoV1RGOjpNYWNoaW5lV29yZCk+Ojpjb3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNw
cAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTMgKzEyMCwxNSBAQCB2b2lk
IFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4CiAKIFN0cmluZyBUZXh0Q29kZWNM
YXRpbjE6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCwgYm9v
bCwgYm9vbCYpCiB7Ci0gICAgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgTENoYXIqIGNoYXJhY3Rl
cnM7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAg
IFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFy
YWN0ZXJzKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJ5dGVzKTsKICAgICBjb25zdCB1aW50OF90KiBlbmQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlcyArIGxlbmd0aCk7CiAgICAgY29uc3QgdWlu
dDhfdCogYWxpZ25lZEVuZCA9IGFsaWduVG9NYWNoaW5lV29yZChlbmQpOwotICAgIFVDaGFyKiBk
ZXN0aW5hdGlvbiA9IGNoYXJhY3RlcnM7CisgICAgTENoYXIqIGRlc3RpbmF0aW9uID0gY2hhcmFj
dGVyczsKIAogICAgIHdoaWxlIChzb3VyY2UgPCBlbmQpIHsKICAgICAgICAgaWYgKGlzQVNDSUko
KnNvdXJjZSkpIHsKQEAgLTE0OSw2ICsxNTEsOSBAQCBTdHJpbmcgVGV4dENvZGVjTGF0aW4xOjpk
ZWNvZGUoY29uc3QgY2hhCiAgICAgICAgICAgICAqZGVzdGluYXRpb24gPSAqc291cmNlOwogICAg
ICAgICB9IGVsc2UgewogdXNlTG9va3VwVGFibGU6CisgICAgICAgICAgICBpZiAodGFibGVbKnNv
dXJjZV0gPiAweGZmKQorICAgICAgICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKKwog
ICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gdGFibGVbKnNvdXJjZV07CiAgICAgICAgIH0KIApA
QCAtMTU3LDYgKzE2Miw1MCBAQCB1c2VMb29rdXBUYWJsZToKICAgICB9CiAKICAgICByZXR1cm4g
cmVzdWx0OworICAgIAordXBDb252ZXJ0VG8xNkJpdDoKKyAgICBVQ2hhciogY2hhcmFjdGVyczE2
OworICAgIFN0cmluZyByZXN1bHQxNiA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIGNoYXJhY3RlcnMxNik7CisKKyAgICBVQ2hhciogZGVzdGluYXRpb24xNiA9IGNoYXJhY3Rl
cnMxNjsKKworICAgIHdoaWxlIChjaGFyYWN0ZXJzIDwgZGVzdGluYXRpb24pCisgICAgICAgICpk
ZXN0aW5hdGlvbjE2KysgPSAqY2hhcmFjdGVycysrOworCisgICAgLy8gSGFuZGxlIHRoZSBjaGFy
YWN0ZXIgdGhhdCB0cmlnZ2VyZWQgdGhlIDE2IGJpdCBwYXRoCisgICAgKmRlc3RpbmF0aW9uMTYg
PSB0YWJsZVsqc291cmNlXTsKKyAgICArK3NvdXJjZTsKKyAgICArK2Rlc3RpbmF0aW9uMTY7CisK
KyAgICB3aGlsZSAoc291cmNlIDwgZW5kKSB7CisgICAgICAgIGlmIChpc0FTQ0lJKCpzb3VyY2Up
KSB7CisgICAgICAgICAgICAvLyBGYXN0IHBhdGggZm9yIEFTQ0lJLiBNb3N0IExhdGluLTEgdGV4
dCB3aWxsIGJlIEFTQ0lJLgorICAgICAgICAgICAgaWYgKGlzQWxpZ25lZFRvTWFjaGluZVdvcmQo
c291cmNlKSkgeworICAgICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UgPCBhbGlnbmVkRW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNBbGxBU0NJSTxMQ2hhcj4oY2h1bmspKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byB1c2VMb29rdXBUYWJsZTE2OworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQoZGVzdGlu
YXRpb24xNiwgc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNpemVvZihN
YWNoaW5lV29yZCk7CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uMTYgKz0gc2l6ZW9m
KE1hY2hpbmVXb3JkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKmRlc3RpbmF0aW9uMTYgPSAqc291cmNlOwor
ICAgICAgICB9IGVsc2UgewordXNlTG9va3VwVGFibGUxNjoKKyAgICAgICAgICAgICpkZXN0aW5h
dGlvbjE2ID0gdGFibGVbKnNvdXJjZV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICsr
c291cmNlOworICAgICAgICArK2Rlc3RpbmF0aW9uMTY7CisgICAgfQorICAgIAorICAgIHJldHVy
biByZXN1bHQxNjsKIH0KIAogc3RhdGljIENTdHJpbmcgZW5jb2RlQ29tcGxleFdpbmRvd3NMYXRp
bjEoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFu
ZGxpbmcgaGFuZGxpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153039</attachid>
            <date>2012-07-18 10:26:25 -0700</date>
            <delta_ts>2012-07-18 11:59:41 -0700</delta_ts>
            <desc>Patch with updates from review</desc>
            <filename>90319-2.patch</filename>
            <type>text/plain</type>
            <size>8200</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjIzOTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1z
YWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVGV4dENvZGVjTGF0aW4xIGhhbmRsZSA4
IGJpdCBkYXRhIHdpdGhvdXQgY29udmVydGluZyB0byBVQ2hhcidzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6IEV4cG9ydGVkIExDaGFyIHZhcmlhbnQgb2YgYWRvcHQoKS4K
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpj
cmVhdGVVbmluaXRpYWxpemVkKTogRXhwb3J0ZWQgTENoYXIgdmFyaWFudC4KKwogMjAxMi0wNy0x
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAt
V3RhdXRvbG9naWNhbC1jb21wYXJlIGFuZCAtV3NpZ24tY29tcGFyZSB3YXJuaW5nIGZsYWdzCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbChyZXAt
Pm1fZGF0YTE2ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgsIExDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBM
Q2hhciomIGRhdGEpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBk
YXRhKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEFMV0FZU19JTkxJTkUgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCwgVComIG91dHB1dCkKICAgICB7CkBAIC0zMzYsOCArMzM2LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZW1wdHkoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8
VUNoYXI+JiBidWZmZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+Jik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZl
cjxMQ2hhcj4mKTsKIAogI2lmIFBMQVRGT1JNKFFUKSAmJiBIQVZFKFFUNSkKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChRU3RyaW5nRGF0YSopOwpJbmRleDogU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNiArMzIxLDcgQEAgcHVibGljOgog
ICAgIC8vIGludG8gdGhlIGJ1ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJu
ZWQgc3RyaW5nIGlzIHVzZWQuCiAgICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1
bnByZWRpY3RhYmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJu
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MjM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTA3LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgVGV4dENvZGVjTGF0aW4xIGhhbmRsZSA4IGJpdCBkYXRhIHdpdGhv
dXQgY29udmVydGluZyB0byBVQ2hhcidzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgY29kZWMgdG8gY3JlYXRlIDggYml0IHN0cmluZ3Mgd2hl
cmUgcG9zc2libGUuCisgICAgICAgIFdlIGFzc3VtZSB0aGF0IHRoZSBpbmNvbWluZyBzdHJlYW0g
Y2FuIGFsbCBiZSBkZWNvZGVkIGFzIDgtYml0IHZhbHVlcy4KKyAgICAgICAgSWYgd2UgZmluZCBh
IDE2LWJpdCB2YWx1ZSwgd2UgdGFrZSB0aGUgYWxyZWFkeSBkZWNvZGVkIGRhdGEgYW5kCisgICAg
ICAgIGNvcHkgLyBjb252ZXJ0IGl0IHRvIGEgMTYtYml0IGJ1ZmZlciBhbmQgdGhlbiBjb250aW51
ZSBwcm9jZXNzIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBzdHJlYW0gYXMgMTYtYml0cy4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGZ1bmN0aW9uYWxpdHkgY292ZXJlZCB3aXRoIGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNBU0NJSUZhc3RQYXRo
Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb3B5QVNDSUlNYWNoaW5lV29yZCk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjTGF0aW4xOjpkZWNvZGUpOgorCiAyMDEyLTA3LTExICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4gCiAKICAgICAgICAgU1ZHVXNlRWxlbWVudCBzaG91bGQgbm90
IHVzZSBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaAkocmV2aXNp
b24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNBU0NJ
SUZhc3RQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdGVtcGxhdGU8c2l6ZV90IHNpemU+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI8ND4geworICAgIHN0YXRpYyB2b2lk
IGNvcHkoTENoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiBzb3VyY2UpCisgICAgewor
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgNCk7CisgICAgfQorICAgIAogICAg
IHN0YXRpYyB2b2lkIGNvcHkoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiBzb3Vy
Y2UpCiAgICAgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKQEAgLTQyLDYg
KzQ3LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IFVDaGFyQnl0ZUZpbGxlcjw0PiB7CiAgICAgfQog
fTsKIHRlbXBsYXRlPD4gc3RydWN0IFVDaGFyQnl0ZUZpbGxlcjw4PiB7CisgICAgc3RhdGljIHZv
aWQgY29weShMQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSkKKyAgICB7
CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCA4KTsKKyAgICB9CisKICAgICBz
dGF0aWMgdm9pZCBjb3B5KFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdCogc291cmNl
KQogICAgIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CkBAIC01NSw2ICs2
NSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI8OD4gewogICAgIH0KIH07
CiAKK2lubGluZSB2b2lkIGNvcHlBU0NJSU1hY2hpbmVXb3JkKExDaGFyKiBkZXN0aW5hdGlvbiwg
Y29uc3QgdWludDhfdCogc291cmNlKQoreworICAgIFVDaGFyQnl0ZUZpbGxlcjxzaXplb2YoV1RG
OjpNYWNoaW5lV29yZCk+Ojpjb3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UpOworfQorCiBpbmxpbmUg
dm9pZCBjb3B5QVNDSUlNYWNoaW5lV29yZChVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSkKIHsKICAgICBVQ2hhckJ5dGVGaWxsZXI8c2l6ZW9mKFdURjo6TWFjaGluZVdv
cmQpPjo6Y29weShkZXN0aW5hdGlvbiwgc291cmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAJKHJldmlzaW9uIDEyMjExMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDEzICsxMjAsMTUgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJl
Z2lzdGVyQ29kZWNzKFRleAogCiBTdHJpbmcgVGV4dENvZGVjTGF0aW4xOjpkZWNvZGUoY29uc3Qg
Y2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wsIGJvb2wsIGJvb2wmKQogewotICAgIFVD
aGFyKiBjaGFyYWN0ZXJzOworICAgIExDaGFyKiBjaGFyYWN0ZXJzOworICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gU3Ry
aW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFjdGVycyk7CiAKICAgICBjb25z
dCB1aW50OF90KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRl
cyk7CiAgICAgY29uc3QgdWludDhfdCogZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnl0ZXMgKyBsZW5ndGgpOwogICAgIGNvbnN0IHVpbnQ4X3QqIGFsaWduZWRFbmQgPSBh
bGlnblRvTWFjaGluZVdvcmQoZW5kKTsKLSAgICBVQ2hhciogZGVzdGluYXRpb24gPSBjaGFyYWN0
ZXJzOworICAgIExDaGFyKiBkZXN0aW5hdGlvbiA9IGNoYXJhY3RlcnM7CiAKICAgICB3aGlsZSAo
c291cmNlIDwgZW5kKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJKCpzb3VyY2UpKSB7CkBAIC0xNDks
NiArMTUxLDkgQEAgU3RyaW5nIFRleHRDb2RlY0xhdGluMTo6ZGVjb2RlKGNvbnN0IGNoYQogICAg
ICAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKICAgICAgICAgfSBlbHNlIHsKIHVzZUxv
b2t1cFRhYmxlOgorICAgICAgICAgICAgaWYgKHRhYmxlWypzb3VyY2VdID4gMHhmZikKKyAgICAg
ICAgICAgICAgICBnb3RvIHVwQ29udmVydFRvMTZCaXQ7CisKICAgICAgICAgICAgICpkZXN0aW5h
dGlvbiA9IHRhYmxlWypzb3VyY2VdOwogICAgICAgICB9CiAKQEAgLTE1Nyw2ICsxNjIsNTQgQEAg
dXNlTG9va3VwVGFibGU6CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKK3VwQ29u
dmVydFRvMTZCaXQ6CisgICAgVUNoYXIqIGNoYXJhY3RlcnMxNjsKKyAgICBTdHJpbmcgcmVzdWx0
MTYgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJzMTYpOwor
CisgICAgVUNoYXIqIGRlc3RpbmF0aW9uMTYgPSBjaGFyYWN0ZXJzMTY7CisKKyAgICAvLyBaZXJv
IGV4dGVuZCBhbmQgY29weSBhbHJlYWR5IHByb2Nlc3NlZCA4IGJpdCBkYXRhCisgICAgTENoYXIq
IHB0cjggPSBjaGFyYWN0ZXJzOworICAgIExDaGFyKiBlbmRQdHI4ID0gZGVzdGluYXRpb247CisK
KyAgICB3aGlsZSAocHRyOCA8IGVuZFB0cjgpCisgICAgICAgICpkZXN0aW5hdGlvbjE2KysgPSAq
cHRyOCsrOworCisgICAgLy8gSGFuZGxlIHRoZSBjaGFyYWN0ZXIgdGhhdCB0cmlnZ2VyZWQgdGhl
IDE2IGJpdCBwYXRoCisgICAgKmRlc3RpbmF0aW9uMTYgPSB0YWJsZVsqc291cmNlXTsKKyAgICAr
K3NvdXJjZTsKKyAgICArK2Rlc3RpbmF0aW9uMTY7CisKKyAgICB3aGlsZSAoc291cmNlIDwgZW5k
KSB7CisgICAgICAgIGlmIChpc0FTQ0lJKCpzb3VyY2UpKSB7CisgICAgICAgICAgICAvLyBGYXN0
IHBhdGggZm9yIEFTQ0lJLiBNb3N0IExhdGluLTEgdGV4dCB3aWxsIGJlIEFTQ0lJLgorICAgICAg
ICAgICAgaWYgKGlzQWxpZ25lZFRvTWFjaGluZVdvcmQoc291cmNlKSkgeworICAgICAgICAgICAg
ICAgIHdoaWxlIChzb3VyY2UgPCBhbGlnbmVkRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIE1h
Y2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IE1hY2hpbmVXb3Jk
Kj4oc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlm
ICghaXNBbGxBU0NJSTxMQ2hhcj4oY2h1bmspKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290
byB1c2VMb29rdXBUYWJsZTE2OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQoZGVzdGluYXRpb24xNiwgc291cmNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgc291cmNlICs9IHNpemVvZihNYWNoaW5lV29yZCk7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uMTYgKz0gc2l6ZW9mKE1hY2hpbmVXb3JkKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9
PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgKmRlc3RpbmF0aW9uMTYgPSAqc291cmNlOworICAgICAgICB9IGVsc2UgewordXNlTG9v
a3VwVGFibGUxNjoKKyAgICAgICAgICAgICpkZXN0aW5hdGlvbjE2ID0gdGFibGVbKnNvdXJjZV07
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICsrc291cmNlOworICAgICAgICArK2Rlc3Rp
bmF0aW9uMTY7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQxNjsKIH0KIAogc3RhdGlj
IENTdHJpbmcgZW5jb2RlQ29tcGxleFdpbmRvd3NMYXRpbjEoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcgaGFuZGxpbmcpCg==
</data>
<flag name="review"
          id="161884"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>