<?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>120505</bug_id>
          
          <creation_ts>2013-08-29 19:51:12 -0700</creation_ts>
          <short_desc>Make JSValue bool conversion less dangerous</short_desc>
          <delta_ts>2013-08-30 12:16:12 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922787</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 19:51:12 -0700</bug_when>
    <thetext>Make JSValue bool conversion less dangerous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922789</commentid>
    <comment_count>1</comment_count>
      <attachid>210060</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-29 19:51:33 -0700</bug_when>
    <thetext>Created attachment 210060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922790</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 19:52:47 -0700</bug_when>
    <thetext>Attachment 210060 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Interpreter.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyDescriptor.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/PropertyDescriptor.cpp:186:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/JavaScriptCore/runtime/PropertyDescriptor.cpp:187:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922793</commentid>
    <comment_count>3</comment_count>
      <attachid>210060</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-08-29 20:24:28 -0700</bug_when>
    <thetext>Comment on attachment 210060
Patch

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

&gt; Source/JavaScriptCore/jit/JITStubs.cpp:348
&gt; +        if (UNLIKELY(static_cast&lt;bool&gt;(stackFrame.vm-&gt;exception()))) \

Why do you need these casts?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:177
&gt; +    typedef void* (JSValue::*UnspecifiedBoolType);
&gt; +    operator UnspecifiedBoolType*() const;

Of course, if you were using C++11 you could just declare operator bool() as explicit!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922807</commentid>
    <comment_count>4</comment_count>
      <attachid>210060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 21:53:53 -0700</bug_when>
    <thetext>Comment on attachment 210060
Patch

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

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:78
&gt; +        bool hadException() const { return static_cast&lt;bool&gt;(vm().exception()); }

Maybe !! is better than static_cast&lt;bool&gt;?

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:223
&gt; +        if (UNLIKELY(static_cast&lt;bool&gt;(callFrame-&gt;vm().exception())))

I’m surprised you need all these casts inside UNLIKELY. Seems like a bug in the UNLIKELY macro perhaps.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:216
&gt; +    return (tag() != EmptyValueTag) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;

No need for the parentheses here.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:363
&gt; +    return (u.asInt64) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;

No need for the parentheses here.

&gt; Source/JavaScriptCore/runtime/PropertyDescriptor.cpp:188
&gt; -    if (!other.m_value == m_value ||
&gt; -        !other.m_getter == m_getter ||
&gt; -        !other.m_setter == m_setter)
&gt; +    if (!other.m_value == static_cast&lt;bool&gt;(m_value) ||
&gt; +        !other.m_getter == static_cast&lt;bool&gt;(m_getter) ||
&gt; +        !other.m_setter == static_cast&lt;bool&gt;(m_setter))

Can this bizarre code possibly be what&apos;s intended? I really don’t understand what&apos;s going on here. I also think this would read better on a single line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922972</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 08:29:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 210060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210060&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITStubs.cpp:348
&gt; &gt; +        if (UNLIKELY(static_cast&lt;bool&gt;(stackFrame.vm-&gt;exception()))) \
&gt; 
&gt; Why do you need these casts?

UNLIKELY turns into builtin expect, which expects a long, and won&apos;t try to coerce

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValue.h:177
&gt; &gt; +    typedef void* (JSValue::*UnspecifiedBoolType);
&gt; &gt; +    operator UnspecifiedBoolType*() const;
&gt; 
&gt; Of course, if you were using C++11 you could just declare operator bool() as explicit!

I have given up working out what features are okay, and what are not :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922975</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 08:33:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 210060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210060&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.h:78
&gt; &gt; +        bool hadException() const { return static_cast&lt;bool&gt;(vm().exception()); }
&gt; 
&gt; Maybe !! is better than static_cast&lt;bool&gt;?

i&apos;ll see if there&apos;s an isEmpty() function and do !exception.isEmpty() is that reasonable?

&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:223
&gt; &gt; +        if (UNLIKELY(static_cast&lt;bool&gt;(callFrame-&gt;vm().exception())))
&gt; 
&gt; I’m surprised you need all these casts inside UNLIKELY. Seems like a bug in the UNLIKELY macro perhaps.

Hmm, that does seem like a better fix

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:216
&gt; &gt; +    return (tag() != EmptyValueTag) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; 
&gt; No need for the parentheses here.
But i like parenthesis (maybe i just want RPN++? :D )

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:363
&gt; &gt; +    return (u.asInt64) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; 
&gt; No need for the parentheses here.
O_o

Yeah, that&apos;s a bit excessive

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/PropertyDescriptor.cpp:188
&gt; &gt; -    if (!other.m_value == m_value ||
&gt; &gt; -        !other.m_getter == m_getter ||
&gt; &gt; -        !other.m_setter == m_setter)
&gt; &gt; +    if (!other.m_value == static_cast&lt;bool&gt;(m_value) ||
&gt; &gt; +        !other.m_getter == static_cast&lt;bool&gt;(m_getter) ||
&gt; &gt; +        !other.m_setter == static_cast&lt;bool&gt;(m_setter))
&gt; 
&gt; Can this bizarre code possibly be what&apos;s intended? I really don’t understand what&apos;s going on here. I also think this would read better on a single line.

Oh yeah, it&apos;s intended, it took me a while to work out what it was doing (and i think i wrote this code)

Anyway this patch is still ugly, i just wanted to run it through the build systems to find any other issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923052</commentid>
    <comment_count>7</comment_count>
      <attachid>210130</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 10:28:10 -0700</bug_when>
    <thetext>Created attachment 210130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923090</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-08-30 11:08:07 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:216
&gt; &gt; +    return (tag() != EmptyValueTag) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; 
&gt; No need for the parentheses here.

This is actually something I ask people to do. Less thinking required to read the code, and makes it look more like other conditions (if or while).

&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:363
&gt; &gt; +    return (u.asInt64) ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; 
&gt; No need for the parentheses here.

Yet I agree that there should be no parentheses in trivial conditions without spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923100</commentid>
    <comment_count>9</comment_count>
      <attachid>210130</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-30 11:21:40 -0700</bug_when>
    <thetext>Comment on attachment 210130
Patch

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

&gt; Source/JavaScriptCore/runtime/PropertyDescriptor.cpp:188
&gt; +    if (other.m_value.isEmpty() != m_value.isEmpty()
&gt; +        || other.m_getter.isEmpty() != m_getter.isEmpty()
&gt; +        || other.m_setter.isEmpty() != m_setter.isEmpty())

Much easier to read! Still would like to see this merged onto a single line.

&gt; Source/WTF/wtf/Compiler.h:226
&gt; +#define UNLIKELY(x) __builtin_expect(static_cast&lt;bool&gt;(x), 0)

Is !! better than the cast? Do we want this cast even in the non-GCC side of the macro?

&gt; Source/WTF/wtf/Compiler.h:237
&gt; +#define LIKELY(x) __builtin_expect(static_cast&lt;bool&gt;(x), 1)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923125</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 12:16:12 -0700</bug_when>
    <thetext>Committed r154902: &lt;http://trac.webkit.org/changeset/154902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210060</attachid>
            <date>2013-08-29 19:51:33 -0700</date>
            <delta_ts>2013-08-30 10:28:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120505-20130829195138.patch</filename>
            <type>text/plain</type>
            <size>10519</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWZhODhiYzNmZDMyZDVhMGNhZmFmZTYyMTNhZTEyNWQ0MGE3NjY0Li41MWRjMmFlMmMwNWE4Y2Q5
MzNkMGZmNzk1YTg1YWZjMWI5Zjg2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOCBAQAogMjAxMy0wOC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgog
CisgICAgICAgIE1ha2UgSlNWYWx1ZSBib29sIGNvbnZlcnNpb24gbGVzcyBkYW5nZXJvdXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDUwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmhhZEV4Y2VwdGlvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpsb2FkVmFyYXJncyk6CisgICAgICAgICog
aml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSopOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OmVxdWFsVG8pOgorCisyMDEz
LTA4LTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKICAgICAgICAgRml4IGlz
c3VlcyBmb3VuZCBieSBNU1ZDICh3aGljaCBhbHNvIGhhcHBpbHkgZml4ZXMgYW4gdW5pbnRlbnRp
b25hbCBwZXNzaW1pc2F0aW9uKQogCiAgICAgICAgICogcnVudGltZS9NYXBEYXRhLmg6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA5ZTI4ZDMwZDdi
Yzg4ZTg1NGY0YzFlMDRkMWY4MjIxN2UxMDJiNzM1Li45ZmM5NzVjYmZjZDA0MzllNmNhNTY3Zjgy
OTdiNjZjNDcwMTE0NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkluT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZQogICAg
IAogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAgICB2bS0+dGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJpbiIsIGJhc2UpKTsK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNz
KTsKQEAgLTcwNCw3ICs3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJbQogCiAgICAgaWYg
KCFiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJyb3IoZXhlYywgImluIiwgYmFzZSkpOwotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICB9CiAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCBrZXkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDM1OTBj
ZmI1ZTY3OWQ1NTkxMjJjOTZhZGUxMGUzN2QzZDYzMmNkNjUuLjBkMzIxZDhlMWVlMDBiODlkM2Jj
Y2MyOGEzOWU5OWJmZTRhNjJkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICB9CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVybiB2bSgp
LmV4Y2VwdGlvbigpOyB9Ci0gICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uKCkgY29uc3QgeyByZXR1
cm4gdm0oKS5leGNlcHRpb24oKTsgfQorICAgICAgICBib29sIGhhZEV4Y2VwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZtKCkuZXhjZXB0aW9uKCkpOyB9CiAKICAgICAg
ICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVy
biAqdm0oKS5wcm9wZXJ0eU5hbWVzOyB9CiAgICAgICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVm
ZmVyJiBlbXB0eUxpc3QoKSBjb25zdCB7IHJldHVybiAqdm0oKS5lbXB0eUxpc3Q7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDUwMDU3MjUxNjY1OTBjMTAxY2U5MmMyOTc2YzNiZDhjODhhYTdhMDIuLjdhYWE3ZDVjMGY2OTY1
YTEzMzkzN2Y3OGI2YWZhM2QyYjhmNjYxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIENhbGxG
cmFtZSogbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0YWNrLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwKICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFs
dWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQ7ICsraSkgewogICAgICAg
ICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChj
YWxsRnJhbWUsIGkpKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+dm0oKS5leGNl
cHRpb24oKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShzdGF0aWNfY2FzdDxib29sPihjYWxsRnJh
bWUtPnZtKCkuZXhjZXB0aW9uKCkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICByZXR1cm4gbmV3Q2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAppbmRleCA2NGMzOWI3OTY1NzRhYWQ1NzY1NDE4M2Y0M2FkNzM5ZGJiZTY2MjU5Li5hYTg3NGU5
M2RhYjg0ZmEyZjE4MmMwZDUxODE4M2RhMTY4YmNlOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcApAQCAtMzQ1LDE3ICszNDUsMTcgQEAgc3RhdGljIE5FVkVSX0lOTElO
RSB2b2lkIHJldHVyblRvVGhyb3dUcmFtcG9saW5lKFZNKiB2bSwgUmV0dXJuQWRkcmVzc1B0ciBl
eGNlcHQKIAogI2RlZmluZSBDSEVDS19GT1JfRVhDRVBUSU9OKCkgXAogICAgIGRvIHsgXAotICAg
ICAgICBpZiAoVU5MSUtFTFkoc3RhY2tGcmFtZS52bS0+ZXhjZXB0aW9uKCkpKSBcCisgICAgICAg
IGlmIChVTkxJS0VMWShzdGF0aWNfY2FzdDxib29sPihzdGFja0ZyYW1lLnZtLT5leGNlcHRpb24o
KSkpKSBcCiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT04oKTsgXAogICAgIH0gd2hpbGUg
KDApCiAjZGVmaW5lIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCkgXAogICAgIGRvIHsgXAot
ICAgICAgICBpZiAoVU5MSUtFTFkoc3RhY2tGcmFtZS52bS0+ZXhjZXB0aW9uKCkpKSBcCisgICAg
ICAgIGlmIChVTkxJS0VMWShzdGF0aWNfY2FzdDxib29sPihzdGFja0ZyYW1lLnZtLT5leGNlcHRp
b24oKSkpKSBcCiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7IFwKICAg
ICB9IHdoaWxlICgwKQogI2RlZmluZSBDSEVDS19GT1JfRVhDRVBUSU9OX1ZPSUQoKSBcCiAgICAg
ZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShzdGFja0ZyYW1lLnZtLT5leGNlcHRpb24oKSkp
IHsgXAorICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8Ym9vbD4oc3RhY2tGcmFtZS52
bS0+ZXhjZXB0aW9uKCkpKSkgeyBcCiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT05fQVRf
RU5EKCk7IFwKICAgICAgICAgICAgIHJldHVybjsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDI1OWE3ZTg1OTMw
M2QwYWNjY2NhMzgwNmU0M2ExZTEzN2E2Yzk5MzkuLjQyZjA4NWIxODk5MmYzZTY1MzdkNmYyOTEw
YmRiMzQwYzE3Mzc3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DSEVDS19FWENF
UFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChVTkxJS0VMWSh2
bS5leGNlcHRpb24oKSkpIHsgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRp
Y19jYXN0PGJvb2w+KHZtLmV4Y2VwdGlvbigpKSkpIHsgICAgICAgICAgIFwKICAgICAgICAgICAg
IHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAogICAgICAgICAg
ICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE1
MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICNkZWZpbmUg
TExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3Bj
ID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYg
KFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8Ym9vbD4odm0uZXhjZXB0
aW9uKCkpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAg
ICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVj
LCBfX2NjZV9wYykpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDI2NWFlMTlmYjg0
NTlhNGI1ZWQzNTM4ZGZmZDM4OTZiZjBmZDA0NzguLjE2Mjg3ODdiOTA2Mjc0NmYxNzQ5MDMyNmE4
OWM0ZTc3OGFlZWY2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBDSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpIHsg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRpY19jYXN0PGJvb2w+KHZtLmV4
Y2VwdGlvbigpKSkpIHsgICAgICAgICAgIFwKICAgICAgICAgICAgIFJFVFVSTl9UT19USFJPVyhl
eGVjLCBwYyk7ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCBlNDZlOGI0NWI3MmUzNDhjYjNiMzM0YTAyOWZmMmNhMjE3NWJlNjhk
Li42ZGQ5YmJiZDY3Zjk1Y2RkYTE5MDY3NDBiNTZhYjA4YzZkMjhjYTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzMsNyArMTczLDggQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IEpTVmFsdWUobG9uZyBsb25nKTsKICAgICBleHBsaWNpdCBKU1Zh
bHVlKHVuc2lnbmVkIGxvbmcgbG9uZyk7CiAKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3Q7Cisg
ICAgdHlwZWRlZiB2b2lkKiAoSlNWYWx1ZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9w
ZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA3ZDUzZjQxYzg1MThmZTY4ZmE2MDY1ZmEx
ZDEwZTdiZmIwZDU1OWM2Li4xOGQyYWVkYjE1OTcxY2I5ZTA4YzE5MjQxYmY5NmE0MzYyNDMwZWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKQEAgLTIxMCwxMCArMjEwLDEwIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0
IEpTQ2VsbCogcHRyKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGlu
dDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlOjpv
cGVyYXRvciBib29sKCkgY29uc3QKK2lubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHRhZygpICE9IERlbGV0ZWRWYWx1ZVRh
Zyk7Ci0gICAgcmV0dXJuIHRhZygpICE9IEVtcHR5VmFsdWVUYWc7CisgICAgcmV0dXJuICh0YWco
KSAhPSBFbXB0eVZhbHVlVGFnKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlw
ZSo+KDEpIDogMDsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBK
U1ZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTM1OCw5ICszNTgsOSBAQCBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKICAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAotaW5saW5lIEpT
VmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAoraW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdS5hc0ludDY0OworICAg
IHJldHVybiAodS5hc0ludDY0KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlw
ZSo+KDEpIDogMDsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBK
U1ZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA4ODc0Mzk0N2ZhMjgz
YmJkMGRmMDIwOWUwZmEyOTI2YTQxMmZhN2Y3Li4zNTg5ZDM1ZDFiNjIxOTMwOWM1ZDA5YzA2NWU1
Y2Q4NzRjYTZmMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgp
LT5nbG9iYWxPYmplY3QoKTsKICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UpOwogICAgIGlmICghZXZhbCkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
PmludGVycHJldGVyKCktPmV4ZWN1dGUoZXZhbCwgZXhlYywgY2FsbGVlR2xvYmFsT2JqZWN0LT5n
bG9iYWxUaGlzKCksIGNhbGxlZUdsb2JhbE9iamVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKaW5kZXggOGU0MTNj
NDBmNjk1MTM3YjQ5NjU0MTZjNDJkODc0NmUwNDdmYmRhOC4uMjgzNDYwNzc0MGEyZjEzN2UxN2Y5
ZTRhODAxNTEzOGYzOTU4YjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCkBAIC0xODMsOSArMTgzLDkgQEAgYm9vbCBz
YW1lVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGEsIEpTVmFsdWUgYikKIAogYm9vbCBQ
cm9wZXJ0eURlc2NyaXB0b3I6OmVxdWFsVG8oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIG90aGVyKSBjb25zdAogewotICAgIGlmICghb3RoZXIubV92YWx1ZSA9PSBt
X3ZhbHVlIHx8Ci0gICAgICAgICFvdGhlci5tX2dldHRlciA9PSBtX2dldHRlciB8fAotICAgICAg
ICAhb3RoZXIubV9zZXR0ZXIgPT0gbV9zZXR0ZXIpCisgICAgaWYgKCFvdGhlci5tX3ZhbHVlID09
IHN0YXRpY19jYXN0PGJvb2w+KG1fdmFsdWUpIHx8CisgICAgICAgICFvdGhlci5tX2dldHRlciA9
PSBzdGF0aWNfY2FzdDxib29sPihtX2dldHRlcikgfHwKKyAgICAgICAgIW90aGVyLm1fc2V0dGVy
ID09IHN0YXRpY19jYXN0PGJvb2w+KG1fc2V0dGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiAoIW1fdmFsdWUgfHwgc2FtZVZhbHVlKGV4ZWMsIG90aGVyLm1fdmFsdWUsIG1f
dmFsdWUpKQogICAgICAgICAmJiAoIW1fZ2V0dGVyIHx8IEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4
ZWMsIG90aGVyLm1fZ2V0dGVyLCBtX2dldHRlcikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210130</attachid>
            <date>2013-08-30 10:28:10 -0700</date>
            <delta_ts>2013-08-30 11:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120505-20130830102809.patch</filename>
            <type>text/plain</type>
            <size>8096</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWZhODhiYzNmZDMyZDVhMGNhZmFmZTYyMTNhZTEyNWQ0MGE3NjY0Li42NTVkMzNjNWUyZTY1YjBh
YWMxM2I3OThjZGU4ZGRjMzU0M2RkODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMy0wOC0zMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNWYWx1ZSBib29sIGNvbnZlcnNpb24gbGVzcyBkYW5nZXJvdXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDUwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VzIEpT
VmFsdWU6Om9wZXJhdG9yIGJvb2woKSB3aXRoIGEgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlw
ZSogYXMKKyAgICAgICAgd2UgZG8gZWxzZXdoZXJlLiAgVGhlbiBmaXggdGhlIHBsYWNlcyB3aGVy
ZSB0ZXJyaWJsZSB0eXBlIGNvZXJjaW9uIHdhcworICAgICAgICBoYXBwZW5pbmcuICBBbGwgb2Yg
dGhlIGNoYW5nZXMgbWFkZSBoYWQgbm8gZnVuZGFtZW50YWwgYmVoYXZpb3VyYWwgaW1wYWN0Cisg
ICAgICAgIGFzIHRoZXkgd2VyZSBjb2VyY2lvbiByZXN1bHRzIHRoYXQgd2VyZSBpZ25vcmVkIChy
ZXR1cm5pbmcgdW5kZWZpbmVkIAorICAgICAgICBhZnRlciBhbiBleGNlcHRpb24pLiAgCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aGFkRXhjZXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6Om9wZXJhdG9yIFVuc3BlY2lmaWVkQm9v
bFR5cGUqKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjplcXVh
bFRvKQorCiAyMDEzLTA4LTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IGlzc3VlcyBmb3VuZCBieSBNU1ZDICh3aGljaCBhbHNvIGhhcHBpbHkgZml4ZXMg
YW4gdW5pbnRlbnRpb25hbCBwZXNzaW1pc2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMTMzYjdhZDNjY2VmN2U4NDFk
OTRiMjM2ZTA5ZWRjM2Y0ZjRiYmEyLi45M2NkZWU2ZDg3NTZjNjMyMWQ0MzU2OGIzOWNkMTA4NDg5
ZTdlY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA4LTMwICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBKU1ZhbHVlIGJvb2wgY29udmVyc2lvbiBs
ZXNzIGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwNTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBMSUtFTFkgYW5kIFVOTElLRUxZIG1hY3JvcyBjb2VyY2UgdG8gYm9vbCBiZWZv
cmUKKyAgICAgICAgcGFzc2luZyB0byBleHBlY3QuCisKKyAgICAgICAgKiB3dGYvQ29tcGlsZXIu
aDoKKwogMjAxMy0wOC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBFTkFCTEUgZ3VhcmRzIGZvciBQcm9taXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOWUyOGQzMGQ3YmM4OGU4NTRmNGMxZTA0ZDFmODIy
MTdlMTAyYjczNS4uOWZjOTc1Y2JmY2QwNDM5ZTZjYTU2N2Y4Mjk3YjY2YzQ3MDExNDYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC02NzcsNyAr
Njc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXpl
V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGUKICAgICAKICAgICBpZiAoIWJhc2UtPmlz
T2JqZWN0KCkpIHsKICAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFs
aWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW4iLCBiYXNlKSk7Ci0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIH0KICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5j
b2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7CkBAIC03MDQsNyArNzA0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25JbihFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW0KIAogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkg
ewogICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRl
ckVycm9yKGV4ZWMsICJpbiIsIGJhc2UpKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQog
CiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAppbmRleCAzNTkwY2ZiNWU2NzlkNTU5MTIyYzk2YWRl
MTBlMzdkM2Q2MzJjZDY1Li5iYzU5OTkwZTM0NWVmZTE3OTY1ZGNiMmY1ZjYyNzk0Y2Y5YWZmMzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBA
IC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgfQogCiAgICAgICAgIEpT
VmFsdWUgZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gdm0oKS5leGNlcHRpb24oKTsgfQotICAg
ICAgICBib29sIGhhZEV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZtKCkuZXhjZXB0aW9uKCk7
IH0KKyAgICAgICAgYm9vbCBoYWRFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiAhdm0oKS5leGNl
cHRpb24oKS5pc0VtcHR5KCk7IH0KIAogICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYg
cHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICp2bSgpLnByb3BlcnR5TmFtZXM7IH0KICAg
ICAgICAgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGVtcHR5TGlzdCgpIGNvbnN0IHsgcmV0
dXJuICp2bSgpLmVtcHR5TGlzdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCmluZGV4IGU0NmU4YjQ1YjcyZTM0OGNiM2IzMzRhMDI5ZmYyY2EyMTc1YmU2OGQu
LjZkZDliYmJkNjdmOTVjZGRhMTkwNjc0MGI1NmFiMDhjNmQyOGNhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTE3Myw3ICsxNzMsOCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSlNWYWx1ZShsb25nIGxvbmcpOwogICAgIGV4cGxpY2l0IEpTVmFs
dWUodW5zaWduZWQgbG9uZyBsb25nKTsKIAotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKKyAg
ICB0eXBlZGVmIHZvaWQqIChKU1ZhbHVlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgb3Bl
cmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBK
U1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDdkNTNmNDFjODUxOGZlNjhmYTYwNjVmYTFk
MTBlN2JmYjBkNTU5YzYuLjI0ZGFkMTIyZmIzOWE1YzdmMjExZGY3MGY5ZjFhODEyNDAwZjM0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtMjEwLDEwICsyMTAsMTAgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3Qg
SlNDZWxsKiBwdHIpCiAgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAotaW5saW5lIEpTVmFsdWU6Om9w
ZXJhdG9yIGJvb2woKSBjb25zdAoraW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIFVuc3BlY2lmaWVk
Qm9vbFR5cGUqKCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFnKCkgIT0gRGVsZXRlZFZhbHVlVGFn
KTsKLSAgICByZXR1cm4gdGFnKCkgIT0gRW1wdHlWYWx1ZVRhZzsKKyAgICByZXR1cm4gdGFnKCkg
IT0gRW1wdHlWYWx1ZVRhZyA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+
KDEpIDogMDsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1Zh
bHVlJiBvdGhlcikgY29uc3QKQEAgLTM1OCw5ICszNTgsOSBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZShjb25zdCBKU0NlbGwqIHB0cikKICAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAotaW5saW5lIEpTVmFs
dWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAoraW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIFVuc3Bl
Y2lmaWVkQm9vbFR5cGUqKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdS5hc0ludDY0OworICAgIHJl
dHVybiB1LmFzSW50NjQgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigx
KSA6IDA7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgSlNWYWx1
ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggODg3NDM5NDdmYTI4M2JiZDBk
ZjAyMDllMGZhMjkyNmE0MTJmYTdmNy4uMzU4OWQzNWQxYjYyMTkzMDljNWQwOWMwNjVlNWNkODc0
Y2E2ZjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTR2xvYmFsT2JqZWN0KiBjYWxsZWVHbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlKTsKICAgICBpZiAoIWV2YWwpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5pbnRl
cnByZXRlcigpLT5leGVjdXRlKGV2YWwsIGV4ZWMsIGNhbGxlZUdsb2JhbE9iamVjdC0+Z2xvYmFs
VGhpcygpLCBjYWxsZWVHbG9iYWxPYmplY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCmluZGV4IDhlNDEzYzQwZjY5
NTEzN2I0OTY1NDE2YzQyZDg3NDZlMDQ3ZmJkYTguLjFkZDM1NjA1YzkwMDI4ZjZjNDM2MjQ4OWIw
Yzg4MzUzYTZhMWM2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApAQCAtMTgzLDkgKzE4Myw5IEBAIGJvb2wgc2FtZVZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhLCBKU1ZhbHVlIGIpCiAKIGJvb2wgUHJvcGVy
dHlEZXNjcmlwdG9yOjplcXVhbFRvKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAoIW90aGVyLm1fdmFsdWUgPT0gbV92YWx1
ZSB8fAotICAgICAgICAhb3RoZXIubV9nZXR0ZXIgPT0gbV9nZXR0ZXIgfHwKLSAgICAgICAgIW90
aGVyLm1fc2V0dGVyID09IG1fc2V0dGVyKQorICAgIGlmIChvdGhlci5tX3ZhbHVlLmlzRW1wdHko
KSAhPSBtX3ZhbHVlLmlzRW1wdHkoKQorICAgICAgICB8fCBvdGhlci5tX2dldHRlci5pc0VtcHR5
KCkgIT0gbV9nZXR0ZXIuaXNFbXB0eSgpCisgICAgICAgIHx8IG90aGVyLm1fc2V0dGVyLmlzRW1w
dHkoKSAhPSBtX3NldHRlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gKCFtX3ZhbHVlIHx8IHNhbWVWYWx1ZShleGVjLCBvdGhlci5tX3ZhbHVlLCBtX3ZhbHVl
KSkKICAgICAgICAgJiYgKCFtX2dldHRlciB8fCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBv
dGhlci5tX2dldHRlciwgbV9nZXR0ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29t
cGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNzlmNTk2ZDY0OWMyZDMz
MDQwZmE1OTdmZGRkY2EyMWY2ZGFjNWFjOC4uNGExNTU3MjdlYWQwZTc0ZDcyYzgwNDIwNmM0MDc2
NmI4YjYyODg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC0yMjMsNyArMjIzLDcgQEAKIAogI2lmbmRlZiBV
TkxJS0VMWQogI2lmIENPTVBJTEVSKEdDQykgfHwgKENPTVBJTEVSKFJWQ1QpICYmIGRlZmluZWQo
X19HTlVDX18pKQotI2RlZmluZSBVTkxJS0VMWSh4KSBfX2J1aWx0aW5fZXhwZWN0KCh4KSwgMCkK
KyNkZWZpbmUgVU5MSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdChzdGF0aWNfY2FzdDxib29sPih4
KSwgMCkKICNlbHNlCiAjZGVmaW5lIFVOTElLRUxZKHgpICh4KQogI2VuZGlmCkBAIC0yMzQsNyAr
MjM0LDcgQEAKIAogI2lmbmRlZiBMSUtFTFkKICNpZiBDT01QSUxFUihHQ0MpIHx8IChDT01QSUxF
UihSVkNUKSAmJiBkZWZpbmVkKF9fR05VQ19fKSkKLSNkZWZpbmUgTElLRUxZKHgpIF9fYnVpbHRp
bl9leHBlY3QoKHgpLCAxKQorI2RlZmluZSBMSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdChzdGF0
aWNfY2FzdDxib29sPih4KSwgMSkKICNlbHNlCiAjZGVmaW5lIExJS0VMWSh4KSAoeCkKICNlbmRp
Zgo=
</data>
<flag name="review"
          id="232224"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>