<?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>136280</bug_id>
          
          <creation_ts>2014-08-26 21:46:19 -0700</creation_ts>
          <short_desc>Use RetainPtr::autorelease in some places where it seems appropriate</short_desc>
          <delta_ts>2014-08-30 15:44:23 -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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>andersca</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>1031578</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-26 21:46:19 -0700</bug_when>
    <thetext>Use RetainPtr::autorelease in some places where it seems appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031580</commentid>
    <comment_count>1</comment_count>
      <attachid>237201</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-26 21:49:59 -0700</bug_when>
    <thetext>Created attachment 237201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031610</commentid>
    <comment_count>2</comment_count>
      <attachid>237213</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-27 00:32:32 -0700</bug_when>
    <thetext>Created attachment 237213
Version that actually compiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031708</commentid>
    <comment_count>3</comment_count>
      <attachid>237213</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-27 11:47:04 -0700</bug_when>
    <thetext>Comment on attachment 237213
Version that actually compiles

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

&gt; Source/JavaScriptCore/API/JSContext.mm:195
&gt; +    return (NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name)).autorelease();

Seeing all these type casts makes it seem to me that the return type from autorelease() is not quite right. It’s perfect for functions that return autoreleased CF objects, which is almost never an idiom. It’s not great for functions that return autoreleased NS objects due to toll free bridging, which is what will really happen.

I’d like to see a function like autorelease that only works for types that have toll free bridging and automatically returns the right type, so we can omit all these casts and have type checking. Or one that returns (id). We might still want one that returns the unmolested CF type, but I’m not sure we ever really need that in practice. Maybe we can turn autorelease into that.

One further note. The current autorelease() implementation, if ever used under ARC, would only be good if the result was going into an NS type. If we ever actually tried to use it with the CF type I suspect it would do the wrong thing and not actually autorelease. Yet another argument for changing the return type of the function to an NS type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031866</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-27 18:04:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 237213 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237213&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSContext.mm:195
&gt; &gt; +    return (NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name)).autorelease();
&gt; 
&gt; Seeing all these type casts makes it seem to me that the return type from autorelease() is not quite right. It’s perfect for functions that return autoreleased CF objects, which is almost never an idiom. It’s not great for functions that return autoreleased NS objects due to toll free bridging, which is what will really happen.
&gt; 
&gt; I’d like to see a function like autorelease that only works for types that have toll free bridging and automatically returns the right type, so we can omit all these casts and have type checking. Or one that returns (id). We might still want one that returns the unmolested CF type, but I’m not sure we ever really need that in practice. Maybe we can turn autorelease into that.
&gt; 
&gt; One further note. The current autorelease() implementation, if ever used under ARC, would only be good if the result was going into an NS type. If we ever actually tried to use it with the CF type I suspect it would do the wrong thing and not actually autorelease. Yet another argument for changing the return type of the function to an NS type.

Do we have a generic way to map a CF type to its corresponding NS type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032014</commentid>
    <comment_count>5</comment_count>
      <attachid>237213</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-28 09:38:59 -0700</bug_when>
    <thetext>Comment on attachment 237213
Version that actually compiles

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

&gt;&gt;&gt; Source/JavaScriptCore/API/JSContext.mm:195
&gt;&gt;&gt; +    return (NSString *)adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name)).autorelease();
&gt;&gt; 
&gt;&gt; Seeing all these type casts makes it seem to me that the return type from autorelease() is not quite right. It’s perfect for functions that return autoreleased CF objects, which is almost never an idiom. It’s not great for functions that return autoreleased NS objects due to toll free bridging, which is what will really happen.
&gt;&gt; 
&gt;&gt; I’d like to see a function like autorelease that only works for types that have toll free bridging and automatically returns the right type, so we can omit all these casts and have type checking. Or one that returns (id). We might still want one that returns the unmolested CF type, but I’m not sure we ever really need that in practice. Maybe we can turn autorelease into that.
&gt;&gt; 
&gt;&gt; One further note. The current autorelease() implementation, if ever used under ARC, would only be good if the result was going into an NS type. If we ever actually tried to use it with the CF type I suspect it would do the wrong thing and not actually autorelease. Yet another argument for changing the return type of the function to an NS type.
&gt; 
&gt; Do we have a generic way to map a CF type to its corresponding NS type?

Anders prototyped something called TollFreeBridging.h but he has not yet proposed adding it to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032366</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-30 15:44:23 -0700</bug_when>
    <thetext>Committed r173141: &lt;http://trac.webkit.org/changeset/173141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237201</attachid>
            <date>2014-08-26 21:49:59 -0700</date>
            <delta_ts>2014-08-27 00:32:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136280-20140826214952.patch</filename>
            <type>text/plain</type>
            <size>9243</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UgaW4gc29tZSBwbGFjZXMgd2hlcmUgaXQgc2Vl
bXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKTog
VXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UoKSBpbiBwbGFjZSBvZiBPYmpDIGF1dG9yZWxlYXNl
LgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0cmluZyk6IE1h
a2UgYXBwcm9wcmlhdGUgdXNlIG9mIFJldGFpblB0cgorCiAyMDE0LTA4LTI2ICBCcmlhbiBKLiBC
dXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBw
dXQgZmVhdHVyZSBmbGFncyBmb3IgSW5zcGVjdG9yIGRvbWFpbnMgaW4gdGhlIHByb3RvY29sIHNw
ZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShy
ZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIC0gKE5TU3RyaW5nICopbmFtZQog
ICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbKE5TU3Ry
aW5nICopSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkgYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiAoTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
ICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbQkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NjcsOSArNzY3LDkgQEAgaWQgdmFs
dWVUb1N0cmluZyhKU0dsb2JhbENvbnRleHRSZWYgY29udAogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nKSk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmdDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uo
anNzdHJpbmcpOwotICAgIHJldHVybiBzdHJpbmdOUzsKKyAgICByZXR1cm4gKE5TU3RyaW5nICop
c3RyaW5nQ0YuYXV0b3JlbGVhc2UoKTsKIH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UgaW4g
c29tZSBwbGFjZXMgd2hlcmUgaXQgc2VlbXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvbWFjL1N0cmluZ0ltcGxN
YWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICopOiBV
c2UgYXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mCisgICAgICAgIENGQnJpZGdpbmdSZWxlYXNlKGxl
YWtSZWYoKSkKKwogMjAxNC0wOC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3Mjk0MC4KSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQkocmV2aXNpb24gMTcyOTk1
KQorKysgU291cmNlL1dURi93dGYvdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3Bl
cmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0
ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gY3JlYXRlQ0ZTdHJpbmcoKS5hdXRv
cmVsZWFzZSgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzI5OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxNC0wOC0yNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAg
IFVzZSBSZXRhaW5QdHI6OmF1dG9yZWxlYXNlIGluIHNvbWUgcGxhY2VzIHdoZXJlIGl0IHNlZW1z
IGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpVUkw6Om9w
ZXJhdG9yIE5TVVJMICopOiBVc2UgYXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mCisgICAgICAgIENG
QnJpZGdpbmdSZWxlYXNlKGxlYWtSZWYoKSkKKwogMjAxNC0wOC0yNiAgVml2ZWsgR2FsYXRhZ2Ug
IDx2aXZlay52Z0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBDYW52YXMgZGlyZWN0aW9uIHNob3Vs
ZCByZWZsZWN0IGNoYW5nZSBpbiBkaXIgYXR0cmlidXRlIGFuZCBhbHNvIGFjcm9zcyBzYXZlL3Jl
c3RvcmUgb3BlcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1t
CShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFVSTDo6b3BlcmF0b3IgTlNVUkwg
KigpIGNvbnN0CiB7CiAgICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCwg
YmVjYXVzZSBhIHJlYWwgTlNVUkwgd291bGQgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJp
bmcuCiAgICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBD
RlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZUNGVVJM
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gKE5TVVJMICopY3JlYXRlQ0ZVUkwoKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25z
dApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDgtMjYgIE1hY2ll
aiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmV0YWluUHRyOjph
dXRvcmVsZWFzZSBpbiBzb21lIHBsYWNlcyB3aGVyZSBpdCBzZWVtcyBhcHByb3ByaWF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKHVybFdpdGhXVEZTdHJpbmcpOiBVc2UgYXV0
b3JlbGVhc2UoKSBpbnN0ZWFkIG9mIENGQnJpZGdpbmdSZWxlYXNlKGxlYWtSZWYoKSkKKwogMjAx
NC0wOC0yNiAgTWF0dCBMaWxlayAgPG1ybEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdlYktp
dCBTUEkgdG8gY29udHJvbCB0aGUgbmF2aWdhdG9yLnN0YW5kYWxvbmUgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCShyZXZpc2lv
biAxNzI5OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgaW5saW5lIE5TVVJMICp1
cmxXaXRoV1RGU3RyaW5nKGNvCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBDU3RyaW5nIGJ1
ZmZlciA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0
ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCksIChDRlVSTFJl
ZiliYXNlVVJMKS5sZWFrUmVmKCkpOworICAgIHJldHVybiAoTlNVUkwgKiljcmVhdGVDRlVSTEZy
b21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAoQ0ZVUkxSZWYpYmFzZVVS
TCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0
cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE3Mjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UgaW4gc29tZSBwbGFj
ZXMgd2hlcmUgaXQgc2VlbXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGltYWdlRnJvbVJlY3QpOiBVc2UgUmV0YWluUHRyIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
ICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVw
cmVzZW50YXRpb24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9QREY6XSk6IFVzZSBSZXRh
aW5QdHIKKyAgICAgICAgaW4gdGhpcyBtZXRob2QuCisKIDIwMTQtMDgtMjUgIE1hY2llaiBTdGFj
aG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVzZSBvZiBXS0NvcHlD
RkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUgd2l0aCBOU0xvY2FsZSBwdWJsaWMgQVBJCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDE3Mjk5
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTY2MzEsMTIgKzY2MzEsMTIgQEAgc3RhdGljIENHSW1hZ2VSZWYgaW1hZ2VGcm9t
UmVjdChGcmFtZSogZgogICAgIAogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dFJl
Zik7CiAgICAgCi0gICAgQ0dJbWFnZVJlZiByZXN1bHRJbWFnZSA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHRSZWYpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1bHRJ
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dFJlZikpOwog
ICAgIAogICAgIFdLU2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChvbGRDb250ZXh0KTsKICAgICBm
cmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogICAgIAot
ICAgIHJldHVybiAoQ0dJbWFnZVJlZilDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHRJbWFnZSk7Cisg
ICAgcmV0dXJuIHJlc3VsdEltYWdlLmF1dG9yZWxlYXNlKCk7CiAgICAgCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
REZSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC05MCwyNiArOTAsMjIgQEAgLSAoTlNEYXRhICopY29udmVydFBvc3RTY3JpcHREYXRhU291
cmNlVAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3Jh
cGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0
L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKIAogICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFja3Mg
Y2FsbGJhY2tzID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07ICAgIAotICAgIENHUFNDb252
ZXJ0ZXJSZWYgY29udmVydGVyID0gQ0dQU0NvbnZlcnRlckNyZWF0ZSgwLCAmY2FsbGJhY2tzLCAw
KTsKLSAgICBBU1NFUlQoY29udmVydGVyKTsKKyAgICBSZXRhaW5QdHI8Q0dQU0NvbnZlcnRlclJl
Zj4gY29udmVydGVyID0gYWRvcHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3Ms
IDApKTsKKyAgICBBU1NFUlQoY29udmVydGVyLmdldCgpKTsKIAotICAgIENHRGF0YVByb3ZpZGVy
UmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFSZWYp
ZGF0YSk7Ci0gICAgQVNTRVJUKHByb3ZpZGVyKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEo
KENGRGF0YVJlZilkYXRhKSk7CisgICAgQVNTRVJUKHByb3ZpZGVyLmdldCgpKTsKIAotICAgIENG
TXV0YWJsZURhdGFSZWYgcmVzdWx0ID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDApKTsKKyAgICBBU1NFUlQocmVzdWx0LmdldCgpKTsKIAotICAgIENHRGF0YUNv
bnN1bWVyUmVmIGNvbnN1bWVyID0gQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHJlc3Vs
dCk7Ci0gICAgQVNTRVJUKGNvbnN1bWVyKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhQ29uc3VtZXJS
ZWY+IGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEocmVz
dWx0LmdldCgpKSk7CisgICAgQVNTRVJUKGNvbnN1bWVyLmdldCgpKTsKIAogICAgIC8vIEVycm9y
IGhhbmRsZWQgYnkgZGV0ZWN0aW5nIHplcm8tbGVuZ3RoICdyZXN1bHQnIGluIGNhbGxlcgogICAg
IENHUFNDb252ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRlciwgcHJvdmlkZXIsIGNvbnN1bWVyLCAwKTsK
IAotICAgIENGUmVsZWFzZShjb252ZXJ0ZXIpOwotICAgIENGUmVsZWFzZShwcm92aWRlcik7Ci0g
ICAgQ0ZSZWxlYXNlKGNvbnN1bWVyKTsKLQotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShy
ZXN1bHQpOworICAgIHJldHVybiAoTlNVUkwgKilyZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRh
dGFTb3VyY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237213</attachid>
            <date>2014-08-27 00:32:32 -0700</date>
            <delta_ts>2014-08-28 09:38:59 -0700</delta_ts>
            <desc>Version that actually compiles</desc>
            <filename>bug-136280-20140827003224.patch</filename>
            <type>text/plain</type>
            <size>9761</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UgaW4gc29tZSBwbGFjZXMgd2hlcmUgaXQgc2Vl
bXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKTog
VXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UoKSBpbiBwbGFjZSBvZiBPYmpDIGF1dG9yZWxlYXNl
LgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0cmluZyk6IE1h
a2UgYXBwcm9wcmlhdGUgdXNlIG9mIFJldGFpblB0cgorCiAyMDE0LTA4LTI2ICBCcmlhbiBKLiBC
dXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBw
dXQgZmVhdHVyZSBmbGFncyBmb3IgSW5zcGVjdG9yIGRvbWFpbnMgaW4gdGhlIHByb3RvY29sIHNw
ZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShy
ZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIC0gKE5TU3RyaW5nICopbmFtZQog
ICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbKE5TU3Ry
aW5nICopSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkgYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiAoTlNTdHJpbmcgKilhZG9wdENGKEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
ICh2b2lkKXNldE5hbWU6KE5TU3RyaW5nICopbmFtZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbQkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NjcsOSArNzY3LDkgQEAgaWQgdmFs
dWVUb1N0cmluZyhKU0dsb2JhbENvbnRleHRSZWYgY29udAogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nKSk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmdDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uo
anNzdHJpbmcpOwotICAgIHJldHVybiBzdHJpbmdOUzsKKyAgICByZXR1cm4gKE5TU3RyaW5nICop
c3RyaW5nQ0YuYXV0b3JlbGVhc2UoKTsKIH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2UgaW4g
c29tZSBwbGFjZXMgd2hlcmUgaXQgc2VlbXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvbWFjL1N0cmluZ0ltcGxN
YWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICopOiBV
c2UgYXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mCisgICAgICAgIENGQnJpZGdpbmdSZWxlYXNlKGxl
YWtSZWYoKSkKKwogMjAxNC0wOC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3Mjk0MC4KSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQkocmV2aXNpb24gMTcyOTk1
KQorKysgU291cmNlL1dURi93dGYvdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3Bl
cmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0
ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gKE5TU3RyaW5nICopY3JlYXRlQ0ZT
dHJpbmcoKS5hdXRvcmVsZWFzZSgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NzI5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxNC0wOC0yNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBSZXRhaW5QdHI6OmF1dG9yZWxlYXNlIGluIHNvbWUgcGxhY2VzIHdo
ZXJlIGl0IHNlZW1zIGFwcHJvcHJpYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpVUkw6Om9wZXJhdG9yIE5TVVJMICopOiBVc2UgYXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9m
CisgICAgICAgIENGQnJpZGdpbmdSZWxlYXNlKGxlYWtSZWYoKSkKKwogMjAxNC0wOC0yNiAgVml2
ZWsgR2FsYXRhZ2UgIDx2aXZlay52Z0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBDYW52YXMgZGly
ZWN0aW9uIHNob3VsZCByZWZsZWN0IGNoYW5nZSBpbiBkaXIgYXR0cmlidXRlIGFuZCBhbHNvIGFj
cm9zcyBzYXZlL3Jlc3RvcmUgb3BlcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1VSTE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVVJMTWFjLm1tCShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVVJMTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFVSTDo6b3Bl
cmF0b3IgTlNVUkwgKigpIGNvbnN0CiB7CiAgICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJp
ZGdlZCBDRlVSTCwgYmVjYXVzZSBhIHJlYWwgTlNVUkwgd291bGQgbm90IHByZXNlcnZlIHRoZSBv
cmlnaW5hbCBzdHJpbmcuCiAgICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5kLXRy
aXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gKE5TVVJMICopY3JlYXRlQ0ZV
UkwoKS5hdXRvcmVsZWFzZSgpOwogfQogCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRl
Q0ZVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyOTk1KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQt
MDgtMjYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
UmV0YWluUHRyOjphdXRvcmVsZWFzZSBpbiBzb21lIHBsYWNlcyB3aGVyZSBpdCBzZWVtcyBhcHBy
b3ByaWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKHVybFdpdGhXVEZTdHJp
bmcpOiBVc2UgYXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mIENGQnJpZGdpbmdSZWxlYXNlKGxlYWtS
ZWYoKSkKKwogMjAxNC0wOC0yNiAgTWF0dCBMaWxlayAgPG1ybEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFdlYktpdCBTUEkgdG8gY29udHJvbCB0aGUgbmF2aWdhdG9yLnN0YW5kYWxvbmUgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFz
Lm1tCShyZXZpc2lvbiAxNzI5OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tO
U1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIE5TVVJMICp1cmxXaXRoV1RGU3RyaW5nKGNvCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICBDU3RyaW5nIGJ1ZmZlciA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdS
ZWxlYXNlKGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3Ro
KCksIChDRlVSTFJlZiliYXNlVVJMKS5sZWFrUmVmKCkpOworICAgIHJldHVybiAoTlNVUkwgKilj
cmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAoQ0ZV
UkxSZWYpYmFzZVVSTCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJf
VVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE3Mjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA4LTI2ICBNYWNpZWogU3RhY2hvd2lh
ayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJldGFpblB0cjo6YXV0b3JlbGVhc2Ug
aW4gc29tZSBwbGFjZXMgd2hlcmUgaXQgc2VlbXMgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOiBVc2UgUmV0YWluUHRyIGluIHRoaXMgZnVuY3Rp
b24uCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViUERGUmVwcmVzZW50YXRpb24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9QREY6
XSk6IFVzZSBSZXRhaW5QdHIKKyAgICAgICAgaW4gdGhpcyBtZXRob2QuCisKIDIwMTQtMDgtMjUg
IE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIHVz
ZSBvZiBXS0NvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUgd2l0aCBOU0xvY2FsZSBwdWJs
aWMgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJl
dmlzaW9uIDE3Mjk5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY2MzEsMTIgKzY2MzEsMTIgQEAgc3RhdGljIENHSW1hZ2VS
ZWYgaW1hZ2VGcm9tUmVjdChGcmFtZSogZgogICAgIAogICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dFJlZik7CiAgICAgCi0gICAgQ0dJbWFnZVJlZiByZXN1bHRJbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHRSZWYpOworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiByZXN1bHRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29u
dGV4dFJlZikpOwogICAgIAogICAgIFdLU2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChvbGRDb250
ZXh0KTsKICAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZp
b3IpOwogICAgIAotICAgIHJldHVybiAoQ0dJbWFnZVJlZilDRkJyaWRnaW5nUmVsZWFzZShyZXN1
bHRJbWFnZSk7CisgICAgcmV0dXJuIHJlc3VsdEltYWdlLmF1dG9yZWxlYXNlKCk7CiAgICAgCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAxNzI5OTUp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTIgQEAKICNpbXBvcnQgIldlYlBERkRvY3VtZW50
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJQREZWaWV3LmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVy
bmFsLmgiCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9y
dCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJQREZSZXByZXNlbnRhdGlvbgogCkBAIC05MCwyNiArOTEsMjIg
QEAgLSAoTlNEYXRhICopY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVAogICAgIC8vIGh0dHA6
Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNl
cHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlv
bl8xLmh0bWwKIAogICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwIH07ICAgIAotICAgIENHUFNDb252ZXJ0ZXJSZWYgY29udmVydGVy
ID0gQ0dQU0NvbnZlcnRlckNyZWF0ZSgwLCAmY2FsbGJhY2tzLCAwKTsKLSAgICBBU1NFUlQoY29u
dmVydGVyKTsKKyAgICBSZXRhaW5QdHI8Q0dQU0NvbnZlcnRlclJlZj4gY29udmVydGVyID0gYWRv
cHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3MsIDApKTsKKyAgICBBU1NFUlQo
Y29udmVydGVyLmdldCgpKTsKIAotICAgIENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVyID0gQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFSZWYpZGF0YSk7Ci0gICAgQVNTRVJU
KHByb3ZpZGVyKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilkYXRhKSk7
CisgICAgQVNTRVJUKHByb3ZpZGVyLmdldCgpKTsKIAotICAgIENGTXV0YWJsZURhdGFSZWYgcmVz
dWx0ID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICBB
U1NFUlQocmVzdWx0KTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcmVzdWx0ID0g
YWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAg
ICBBU1NFUlQocmVzdWx0LmdldCgpKTsKIAotICAgIENHRGF0YUNvbnN1bWVyUmVmIGNvbnN1bWVy
ID0gQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHJlc3VsdCk7Ci0gICAgQVNTRVJUKGNv
bnN1bWVyKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhQ29uc3VtZXJSZWY+IGNvbnN1bWVyID0gYWRv
cHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEocmVzdWx0LmdldCgpKSk7CisgICAg
QVNTRVJUKGNvbnN1bWVyLmdldCgpKTsKIAogICAgIC8vIEVycm9yIGhhbmRsZWQgYnkgZGV0ZWN0
aW5nIHplcm8tbGVuZ3RoICdyZXN1bHQnIGluIGNhbGxlcgotICAgIENHUFNDb252ZXJ0ZXJDb252
ZXJ0KGNvbnZlcnRlciwgcHJvdmlkZXIsIGNvbnN1bWVyLCAwKTsKLQotICAgIENGUmVsZWFzZShj
b252ZXJ0ZXIpOwotICAgIENGUmVsZWFzZShwcm92aWRlcik7Ci0gICAgQ0ZSZWxlYXNlKGNvbnN1
bWVyKTsKKyAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0KCksIHByb3ZpZGVy
LmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVh
c2UocmVzdWx0KTsKKyAgICByZXR1cm4gKE5TRGF0YSAqKXJlc3VsdC5hdXRvcmVsZWFzZSgpOwog
fQogCiAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNl
ICopZGF0YVNvdXJjZQo=
</data>
<flag name="review"
          id="261929"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>