<?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>107778</bug_id>
          
          <creation_ts>2013-01-23 20:08:26 -0800</creation_ts>
          <short_desc>Objective-C API: JSContext exception property causes reference cycle</short_desc>
          <delta_ts>2013-01-31 14:41:21 -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>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814992</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-23 20:08:26 -0800</bug_when>
    <thetext>JSContext has a (retain) JSValue * exception property which, when non-null, creates a reference cycle (since the JSValue * holds a strong reference back to the JSContext *).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815674</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-24 11:46:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/13079694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820633</commentid>
    <comment_count>2</comment_count>
      <attachid>185587</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-30 14:55:57 -0800</bug_when>
    <thetext>Created attachment 185587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820667</commentid>
    <comment_count>3</comment_count>
      <attachid>185587</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-30 15:14:25 -0800</bug_when>
    <thetext>Comment on attachment 185587
Patch

Do we need to to something to keep the exception value from being garbage collected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820869</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-01-30 17:38:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 185587 [details])
&gt; Do we need to to something to keep the exception value from being garbage collected?

Oh, I think you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820875</commentid>
    <comment_count>5</comment_count>
      <attachid>185587</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-01-30 17:41:03 -0800</bug_when>
    <thetext>Comment on attachment 185587
Patch

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

r- for protect issue Geoff identified.

&gt; Source/JavaScriptCore/API/JSContext.mm:93
&gt; +        m_exception = nil;

I think we only use nil for Objective-C pointer types; this should probably by 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820882</commentid>
    <comment_count>6</comment_count>
      <attachid>185638</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-30 17:49:39 -0800</bug_when>
    <thetext>Created attachment 185638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821655</commentid>
    <comment_count>7</comment_count>
      <attachid>185638</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-31 10:44:37 -0800</bug_when>
    <thetext>Comment on attachment 185638
Patch

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

&gt; Source/JavaScriptCore/API/JSContext.mm:45
&gt; +    JSValueRef m_exception;

Make this Strong&lt;&gt; or ProtectedPtr&lt;&gt;

&gt; Source/JavaScriptCore/API/JSContext.mm:100
&gt; +    if (m_exception)
&gt; +        JSValueUnprotect(m_context, m_exception);
&gt; +
&gt; +    if (value) {
&gt; +        m_exception = valueInternalValue(value);
&gt; +        JSValueProtect(m_context, m_exception);
&gt; +    } else
&gt; +        m_exception = 0;

This becomes much simpler if m_exception is simply a Strong or ProtectedPtr -- I assume we&apos;d prefer Strong&lt;&gt; these days but maybe i&apos;m wrong?

&gt; Source/JavaScriptCore/API/JSContext.mm:107
&gt; +    if (m_exception)
&gt; +        return [JSValue valueWithValue:m_exception inContext:self];
&gt; +     return nil;

Formatting horror!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821693</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-31 11:02:40 -0800</bug_when>
    <thetext>Strong is a bit more efficient than ProtectedPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821698</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 11:03:24 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/API/JSContext.mm:107
&gt; &gt; +    if (m_exception)
&gt; &gt; +        return [JSValue valueWithValue:m_exception inContext:self];
&gt; &gt; +     return nil;
&gt; 
&gt; Formatting horror!

Oh my.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821740</commentid>
    <comment_count>10</comment_count>
      <attachid>185827</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 11:21:34 -0800</bug_when>
    <thetext>Created attachment 185827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821743</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 11:23:19 -0800</bug_when>
    <thetext>In JSContext.h, the exception property is marked with the &quot;retain&quot; attribute. I&apos;m not sure whether this is correct or not, since we do &quot;retain&quot; the internal JavaScript value, but we don&apos;t retain that particular JSValue that is passed into setException.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821873</commentid>
    <comment_count>12</comment_count>
      <attachid>185827</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-31 13:01:15 -0800</bug_when>
    <thetext>Comment on attachment 185827
Patch

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

&gt; Source/JavaScriptCore/API/JSContext.mm:99
&gt; +    if (m_exception)
&gt; +        return [JSValue valueWithValue:toRef(m_exception.get()) inContext:self];
&gt; +    return nil;

Normally WebKit style is to use early return for the exceptional cases, so the return nil would come first.

Is the special case for nil needed? Does valueWithValue:inContext: handle null properly? Do we need to optimize the null case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821881</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 13:13:49 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 185827 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185827&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSContext.mm:99
&gt; &gt; +    if (m_exception)
&gt; &gt; +        return [JSValue valueWithValue:toRef(m_exception.get()) inContext:self];
&gt; &gt; +    return nil;
&gt; 
&gt; Normally WebKit style is to use early return for the exceptional cases, so the return nil would come first.
&gt; 
&gt; Is the special case for nil needed? Does valueWithValue:inContext: handle null properly? Do we need to optimize the null case?

valueWithValue:inContext: calls initWithValue:inContext: which has an ASSERT(value), so it doesn&apos;t do the right thing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821976</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-31 14:41:21 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/141490.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185587</attachid>
            <date>2013-01-30 14:55:57 -0800</date>
            <delta_ts>2013-01-30 17:49:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107778-20130130145241.patch</filename>
            <type>text/plain</type>
            <size>1889</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTAxLTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBKU0NvbnRleHQgZXhjZXB0aW9uIHByb3BlcnR5IGNh
dXNlcyByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEpTQ29udGV4dCBoYXMgYSAocmV0YWluKSBKU1ZhbHVlICogZXhjZXB0aW9u
IHByb3BlcnR5IHdoaWNoLCB3aGVuIG5vbi1udWxsLCBjcmVhdGVzIGEgCisgICAgICAgIHJlZmVy
ZW5jZSBjeWNsZSAoc2luY2UgdGhlIEpTVmFsdWUgKiBob2xkcyBhIHN0cm9uZyByZWZlcmVuY2Ug
YmFjayB0byB0aGUgSlNDb250ZXh0ICopLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbTog
SW5zdGVhZCBvZiBKU1ZhbHVlICosIHdlIG5vdyB1c2UgYSBwbGFpbiBKU1ZhbHVlUmVmLCB3aGlj
aCBlbGltaW5hdGVzIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgICAgICgtW0pTQ29udGV4dCBz
ZXRFeGNlcHRpb246XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBleGNlcHRpb25dKToKKwogMjAx
My0wMS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIE9iamVjdGl2ZS1DIEFQSTogSlNDb250ZXh0J3MgZGVhbGxvYyBjYXVzZXMgQVNTRVJUIGR1
ZSB0byBvcmRlcmluZyBvZiByZWxlYXNlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHQubW0JKHJldmlzaW9uIDE0MTMyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgSlNW
aXJ0dWFsTWFjaGluZSAqbV92aXJ0dWFsTWFjaGluZTsKICAgICBKU0dsb2JhbENvbnRleHRSZWYg
bV9jb250ZXh0OwogICAgIEpTV3JhcHBlck1hcCAqbV93cmFwcGVyTWFwOworICAgIEpTVmFsdWVS
ZWYgbV9leGNlcHRpb247CiB9CiAKIEBzeW50aGVzaXplIGV4Y2VwdGlvbjsKQEAgLTg0LDYgKzg1
LDIxIEBAIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKikKICAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpzZWxmXTsKIH0KIAor
LSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUgKil2YWx1ZQoreworICAgIGlmICh2YWx1ZSkK
KyAgICAgICAgbV9leGNlcHRpb24gPSB2YWx1ZUludGVybmFsVmFsdWUodmFsdWUpOworICAgIGVs
c2UKKyAgICAgICAgbV9leGNlcHRpb24gPSBuaWw7Cit9CisKKy0gKEpTVmFsdWUgKilleGNlcHRp
b24KK3sKKyAgICBpZiAobV9leGNlcHRpb24pCisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1
ZVdpdGhWYWx1ZTptX2V4Y2VwdGlvbiBpbkNvbnRleHQ6c2VsZl07CisgICAgIHJldHVybiBuaWw7
Cit9CisKIC0gKEpTV3JhcHBlck1hcCAqKXdyYXBwZXJNYXAKIHsKICAgICByZXR1cm4gbV93cmFw
cGVyTWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185638</attachid>
            <date>2013-01-30 17:49:39 -0800</date>
            <delta_ts>2013-01-31 11:21:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107778-20130130174624.patch</filename>
            <type>text/plain</type>
            <size>2094</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTAxLTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBKU0NvbnRleHQgZXhjZXB0aW9uIHByb3BlcnR5IGNh
dXNlcyByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEpTQ29udGV4dCBoYXMgYSAocmV0YWluKSBKU1ZhbHVlICogZXhjZXB0aW9u
IHByb3BlcnR5IHdoaWNoLCB3aGVuIG5vbi1udWxsLCBjcmVhdGVzIGEgCisgICAgICAgIHJlZmVy
ZW5jZSBjeWNsZSAoc2luY2UgdGhlIEpTVmFsdWUgKiBob2xkcyBhIHN0cm9uZyByZWZlcmVuY2Ug
YmFjayB0byB0aGUgSlNDb250ZXh0ICopLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbTog
SW5zdGVhZCBvZiBKU1ZhbHVlICosIHdlIG5vdyB1c2UgYSBwbGFpbiBKU1ZhbHVlUmVmLCB3aGlj
aCBlbGltaW5hdGVzIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgICAgICgtW0pTQ29udGV4dCBz
ZXRFeGNlcHRpb246XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBleGNlcHRpb25dKToKKwogMjAx
My0wMS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIE9iamVjdGl2ZS1DIEFQSTogSlNDb250ZXh0J3MgZGVhbGxvYyBjYXVzZXMgQVNTRVJUIGR1
ZSB0byBvcmRlcmluZyBvZiByZWxlYXNlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHQubW0JKHJldmlzaW9uIDE0MTMyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgSlNW
aXJ0dWFsTWFjaGluZSAqbV92aXJ0dWFsTWFjaGluZTsKICAgICBKU0dsb2JhbENvbnRleHRSZWYg
bV9jb250ZXh0OwogICAgIEpTV3JhcHBlck1hcCAqbV93cmFwcGVyTWFwOworICAgIEpTVmFsdWVS
ZWYgbV9leGNlcHRpb247CiB9CiAKIEBzeW50aGVzaXplIGV4Y2VwdGlvbjsKQEAgLTg0LDYgKzg1
LDI4IEBAIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKikKICAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpzZWxmXTsKIH0KIAor
LSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUgKil2YWx1ZQoreworICAgIGlmICh2YWx1ZSAm
JiBtX2V4Y2VwdGlvbiA9PSB2YWx1ZUludGVybmFsVmFsdWUodmFsdWUpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9leGNlcHRpb24pCisgICAgICAgIEpTVmFsdWVVbnByb3RlY3QobV9j
b250ZXh0LCBtX2V4Y2VwdGlvbik7CisKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgbV9leGNl
cHRpb24gPSB2YWx1ZUludGVybmFsVmFsdWUodmFsdWUpOworICAgICAgICBKU1ZhbHVlUHJvdGVj
dChtX2NvbnRleHQsIG1fZXhjZXB0aW9uKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9leGNlcHRp
b24gPSAwOworfQorCistIChKU1ZhbHVlICopZXhjZXB0aW9uCit7CisgICAgaWYgKG1fZXhjZXB0
aW9uKQorICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6bV9leGNlcHRpb24g
aW5Db250ZXh0OnNlbGZdOworICAgICByZXR1cm4gbmlsOworfQorCiAtIChKU1dyYXBwZXJNYXAg
Kil3cmFwcGVyTWFwCiB7CiAgICAgcmV0dXJuIG1fd3JhcHBlck1hcDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185827</attachid>
            <date>2013-01-31 11:21:34 -0800</date>
            <delta_ts>2013-01-31 13:01:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107778-20130131111818.patch</filename>
            <type>text/plain</type>
            <size>2651</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNDQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEzLTAxLTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBKU0NvbnRleHQgZXhjZXB0aW9uIHByb3BlcnR5IGNh
dXNlcyByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEpTQ29udGV4dCBoYXMgYSAocmV0YWluKSBKU1ZhbHVlICogZXhjZXB0aW9u
IHByb3BlcnR5IHdoaWNoLCB3aGVuIG5vbi1udWxsLCBjcmVhdGVzIGEgCisgICAgICAgIHJlZmVy
ZW5jZSBjeWNsZSAoc2luY2UgdGhlIEpTVmFsdWUgKiBob2xkcyBhIHN0cm9uZyByZWZlcmVuY2Ug
YmFjayB0byB0aGUgSlNDb250ZXh0ICopLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbTog
SW5zdGVhZCBvZiBKU1ZhbHVlICosIHdlIG5vdyB1c2UgYSBwbGFpbiBKU1ZhbHVlUmVmLCB3aGlj
aCBlbGltaW5hdGVzIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0RXhjZXB0
aW9uOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgZXhjZXB0aW9uXSk6CisKIDIwMTMtMDEtMzEg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmpl
Y3RpdmUtQyBBUEk6IEZpeCBpbnNlcnRpb24gb2YgdmFsdWVzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4
IGluZGV4IGFsbG93ZWQgYnkgdGhlIHNwZWMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNDEzMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9y
dCAiSmF2YVNjcmlwdENvcmUuaCIKICNpbXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCiAjaW1w
b3J0ICJPcGVyYXRpb25zLmgiCisjaW1wb3J0ICJTdHJvbmdJbmxpbmVzLmgiCiAjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgogCiAjaWYgSlNfT0JKQ19BUElfRU5BQkxFRApAQCAtNDIsOSArNDMsOSBA
QAogICAgIEpTVmlydHVhbE1hY2hpbmUgKm1fdmlydHVhbE1hY2hpbmU7CiAgICAgSlNHbG9iYWxD
b250ZXh0UmVmIG1fY29udGV4dDsKICAgICBKU1dyYXBwZXJNYXAgKm1fd3JhcHBlck1hcDsKKyAg
ICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX2V4Y2VwdGlvbjsKIH0KIAotQHN5bnRoZXNp
emUgZXhjZXB0aW9uOwogQHN5bnRoZXNpemUgZXhjZXB0aW9uSGFuZGxlcjsKIAogLSAoaWQpaW5p
dApAQCAtNjIsNyArNjMsNiBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1
YWxNCiAgICAgbV9jb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChnZXRHcm91
cEZyb21WaXJ0dWFsTWFjaGluZSh2aXJ0dWFsTWFjaGluZSksIDApOwogICAgIG1fd3JhcHBlck1h
cCA9IFtbSlNXcmFwcGVyTWFwIGFsbG9jXSBpbml0V2l0aENvbnRleHQ6c2VsZl07CiAKLSAgICBz
ZWxmLmV4Y2VwdGlvbiA9IG5pbDsKICAgICBzZWxmLmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29u
dGV4dCAqY29udGV4dCwgSlNWYWx1ZSAqZXhjZXB0aW9uVmFsdWUpIHsKICAgICAgICAgY29udGV4
dC5leGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKICAgICB9OwpAQCAtODQsNiArODQsMjEgQEAg
LSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKQogICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OnNlbGZdOwogfQogCistICh2b2lk
KXNldEV4Y2VwdGlvbjooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAgaWYgKHZhbHVlKQorICAgICAg
ICBtX2V4Y2VwdGlvbi5zZXQodG9KUyhtX2NvbnRleHQpLT5nbG9iYWxEYXRhKCksIHRvSlMoSlNW
YWx1ZVRvT2JqZWN0KG1fY29udGV4dCwgdmFsdWVJbnRlcm5hbFZhbHVlKHZhbHVlKSwgMCkpKTsK
KyAgICBlbHNlCisgICAgICAgIG1fZXhjZXB0aW9uLmNsZWFyKCk7Cit9CisKKy0gKEpTVmFsdWUg
KilleGNlcHRpb24KK3sKKyAgICBpZiAobV9leGNlcHRpb24pCisgICAgICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhWYWx1ZTp0b1JlZihtX2V4Y2VwdGlvbi5nZXQoKSkgaW5Db250ZXh0OnNl
bGZdOworICAgIHJldHVybiBuaWw7Cit9CisKIC0gKEpTV3JhcHBlck1hcCAqKXdyYXBwZXJNYXAK
IHsKICAgICByZXR1cm4gbV93cmFwcGVyTWFwOwo=
</data>
<flag name="review"
          id="205048"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>