<?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>158827</bug_id>
          
          <creation_ts>2016-06-15 21:19:45 -0700</creation_ts>
          <short_desc>Avoid some temporary String allocations for common HTTP headers in ResourceResponse::platformLazyInit()</short_desc>
          <delta_ts>2016-07-08 09:04:48 -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>Platform</component>
          <version>WebKit 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>
          
          <blocked>158857</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202852</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 21:19:45 -0700</bug_when>
    <thetext>Avoid some temporary String allocations for common HTTP headers in ResourceResponse::platformLazyInit() by adding a HTTPHeaderMap::set() overload taking a CFStringRef in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202853</commentid>
    <comment_count>1</comment_count>
      <attachid>281435</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 21:26:50 -0700</bug_when>
    <thetext>Created attachment 281435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202930</commentid>
    <comment_count>2</comment_count>
      <attachid>281435</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-16 08:43:57 -0700</bug_when>
    <thetext>Comment on attachment 281435
Patch

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

&gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:69
&gt; +    if (const char* nameCharacters = CFStringGetCStringPtr(name, kCFStringEncodingMacRoman)) {

I suggest auto* here.

After doing a little research on the behavior of recent versions of CF, I suggest using kCFStringEncodingASCII instead of kCFStringEncodingMacRoman here.

&gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:70
&gt; +        unsigned length =  CFStringGetLength(name);

Extra space here after the &quot;=&quot;.

&gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:75
&gt; +            m_uncommonHeaders.set(String(nameCharacters, length), value);

This line of code is incorrect for some non-ASCII characters. The nameCharacters might contain non-Latin-1 characters that are part of kCFStringEncodingMacRoman, and this will convert them into different characters. Easiest fix for that is probably to pass kCFStringEncodingASCII instead. Other fixes involve scanning the characters to see if they are all ASCII.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202940</commentid>
    <comment_count>3</comment_count>
      <attachid>281461</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-16 09:03:16 -0700</bug_when>
    <thetext>Created attachment 281461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202941</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-16 09:04:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 281435 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281435&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:69
&gt; &gt; +    if (const char* nameCharacters = CFStringGetCStringPtr(name, kCFStringEncodingMacRoman)) {
&gt; 
&gt; I suggest auto* here.
&gt; 
&gt; After doing a little research on the behavior of recent versions of CF, I
&gt; suggest using kCFStringEncodingASCII instead of kCFStringEncodingMacRoman
&gt; here.
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:70
&gt; &gt; +        unsigned length =  CFStringGetLength(name);
&gt; 
&gt; Extra space here after the &quot;=&quot;.
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPHeaderMap.cpp:75
&gt; &gt; +            m_uncommonHeaders.set(String(nameCharacters, length), value);
&gt; 
&gt; This line of code is incorrect for some non-ASCII characters. The
&gt; nameCharacters might contain non-Latin-1 characters that are part of
&gt; kCFStringEncodingMacRoman, and this will convert them into different
&gt; characters. Easiest fix for that is probably to pass kCFStringEncodingASCII
&gt; instead. Other fixes involve scanning the characters to see if they are all
&gt; ASCII.

Made the changes. I have confirmed that the hit rate is still around 93% when using kCFStringEncodingASCII.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202943</commentid>
    <comment_count>5</comment_count>
      <attachid>281461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 09:32:05 -0700</bug_when>
    <thetext>Comment on attachment 281461
Patch

Clearing flags on attachment: 281461

Committed r202126: &lt;http://trac.webkit.org/changeset/202126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202944</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 09:32:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203679</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-19 18:09:19 -0700</bug_when>
    <thetext>Would it work to make the overload take a StringView, instead of the CFStringRef/NSString, and have callers convert to StringView if they have non-String types? Then we could keep the platform specific type out of HTTPHeaderMap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203757</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-20 09:08:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Would it work to make the overload take a StringView, instead of the
&gt; CFStringRef/NSString, and have callers convert to StringView if they have
&gt; non-String types? Then we could keep the platform specific type out of
&gt; HTTPHeaderMap?

I wanted to do this at first. However,
1. The converting of a CFStringRef / NSString* into a StringView is not trivial because it is not always possible to get a pointer to the internal characters of a CFStringRef / NSString*.
2. There are 4 call sites (ResourceRequest / ResourceResponse in Cocoa and CF flavors).

I felt like duplicating the relatively complex code for converting a CFStringRef / NSString* into a StringView at 4 different places was not very nice.

What do you think?

Alternatively, I also thought about adding a StringView constructor that takes a CFStringRef in like so:
StringView(CFStringRef string, std::unique_ptr&lt;char[]&gt;&amp; characters);

Which would construct a StringView from the internal CFStringRef characters when possible and would otherwise fallback to extracting those characters and transfer ownership of the characters to the caller via the second parameter.

It would reduce complexity at the 4 call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203779</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-20 10:22:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Alternatively, I also thought about adding a StringView constructor that
&gt; takes a CFStringRef in like so:
&gt; StringView(CFStringRef string, std::unique_ptr&lt;char[]&gt;&amp; characters);
&gt; 
&gt; Which would construct a StringView from the internal CFStringRef characters
&gt; when possible and would otherwise fallback to extracting those characters
&gt; and transfer ownership of the characters to the caller via the second
&gt; parameter.
&gt; 
&gt; It would reduce complexity at the 4 call sites.

If we decide to do something like this, I suggest making it a class instead of a StringView constructor. Call the class something like CocoaStringView; just as with the String class, it needs to outlive any StringView that is made from it. It would usually be fast to destroy, but allocates storage on the heap if needed. Might have some inline capacity too so short strings still don’t require heap allocation even when GetCStringPtr fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209128</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-08 09:04:48 -0700</bug_when>
    <thetext>Confirmed 1% PLT progression on iOS :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281435</attachid>
            <date>2016-06-15 21:26:50 -0700</date>
            <delta_ts>2016-06-16 09:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158827-20160615212649.patch</filename>
            <type>text/plain</type>
            <size>3490</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3ZTE5NmM5ZTRlYzEw
ODU3MzZmODg4NzczOTFmMWE5MmQ2NTY0NC4uZjk0ZTZlN2ZmZWI2ZDY4MDkzZTBkZWU5OTYzYjBl
NjFhMGYxNGQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE2LTA2LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQXZvaWQgc29tZSB0ZW1wb3Jh
cnkgU3RyaW5nIGFsbG9jYXRpb25zIGZvciBjb21tb24gSFRUUCBoZWFkZXJzIGluIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgSFRUUEhlYWRlck1hcDo6c2V0KCkgb3ZlcmxvYWQg
dGFraW5nIGluIGEgQ0ZTdHJpbmdSZWYuIFRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBmYXN0IHBhdGggd2hpY2ggZ2V0cyB0aGUgaW50ZXJuYWwgY2hhcmFjdGVycworICAgICAgICBv
ZiB0aGUgQ0ZTdHJpbmdSZWYgd2hlbiBwb3NzaWJsZSBhbmQgY29uc3RydWN0cyBhIFN0cmluZ1Zp
ZXcgZm9yCisgICAgICAgIGl0IGluIG9yZGVyIHRvIGNhbGwgZmluZEhUVFBIZWFkZXJOYW1lKCku
IEFzIGEgcmVzdWx0LCB3ZSBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIGEgdGVtcG9yYXJ5IFN0
cmluZyB3aGVuIGZpbmRIVFRQSGVhZGVyTmFtZSgpIHN1Y2NlZWRzLgorCisgICAgICAgIFRoaXMg
bmV3IEhUVFBIZWFkZXJNYXA6OnNldCgpIG92ZXJsb2FkIGlzIGNhbGxlZCBmcm9tIGJvdGggdGhl
CisgICAgICAgIENGIGFuZCBDb2NvYSBpbXBsZW1lbnRhdGlvbnMgb2YgUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1MYXp5SW5pdCgpLgorCisgICAgICAgIEkgaGF2ZSBjb25maXJtZWQgbG9jYWxs
eSBvbiBib3RoIE1hYyBhbmQgaU9TIHRoYXQgdGhlIGZhc3QgcGF0aAorICAgICAgICBpcyB1c2Vk
IH45NCUgb2YgdGhlIHRpbWUuIENGU3RyaW5nR2V0Q1N0cmluZ1B0cigpIHJldHVybnMgbnVsbCBp
bgorICAgICAgICByYXJlIGNhc2VzLCBjYXVzaW5nIHRoZSByZWd1bGFyIGNvZGUgcGF0aCB0byBi
ZSB1c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OnNldCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUg
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggOTA1
MTFlYTc5Y2E1ZTBlZGJkNWM2MDU5NWRiMGU3YTAxNTUyNTViNS4uZGEwMGVmZGIxNmYxNzlkNGNi
YjIyMWI3YjczMzE1YmRjZDZlMmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC02MSw2ICs2MSwyNiBAQCBTdHJpbmcgSFRU
UEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9j
b21tb25IZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKIH0KIAorI2lmIFVTRShDRikKKwordm9pZCBI
VFRQSGVhZGVyTWFwOjpzZXQoQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICAvLyBGYXN0IHBhdGg6IGF2b2lkIGNvbnN0cnVjdGluZyBhIHRlbXBvcmFyeSBTdHJp
bmcgaW4gdGhlIGNvbW1vbiBoZWFkZXIgY2FzZS4KKyAgICBpZiAoY29uc3QgY2hhciogbmFtZUNo
YXJhY3RlcnMgPSBDRlN0cmluZ0dldENTdHJpbmdQdHIobmFtZSwga0NGU3RyaW5nRW5jb2RpbmdN
YWNSb21hbikpIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gIENGU3RyaW5nR2V0TGVuZ3Ro
KG5hbWUpOworICAgICAgICBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lOworICAgICAgICBpZiAo
ZmluZEhUVFBIZWFkZXJOYW1lKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KG5hbWVDaGFyYWN0ZXJzKSwgbGVuZ3RoKSwgaGVhZGVyTmFtZSkpCisgICAgICAgICAgICBt
X2NvbW1vbkhlYWRlcnMuc2V0KGhlYWRlck5hbWUsIHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV91bmNvbW1vbkhlYWRlcnMuc2V0KFN0cmluZyhuYW1lQ2hhcmFjdGVycywgbGVu
Z3RoKSwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0KFN0cmluZyhu
YW1lKSwgdmFsdWUpOworfQorCisjZW5kaWYgLy8gVVNFKENGKQorCiB2b2lkIEhUVFBIZWFkZXJN
YXA6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
SFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggZjBlYzNhYjc5MmMyNWY5M2IyYjEzMGRlZThm
ZGI2MTE2N2E1NGEzYy4uYzVkZTJhMWZkODgyNjNmZjI1YmYxMjZmYWNhYzRmZjRjNTU4M2E1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgK
QEAgLTEzMSw2ICsxMzEsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGFpbnMoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgU3RyaW5n
Jik7CiAKKyNpZiBVU0UoQ0YpCisgICAgdm9pZCBzZXQoQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CisjZW5kaWYKKwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXQo
SFRUUEhlYWRlck5hbWUpIGNvbnN0OwogICAgIHZvaWQgc2V0KEhUVFBIZWFkZXJOYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIGFkZChIVFRQSGVhZGVyTmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281461</attachid>
            <date>2016-06-16 09:03:16 -0700</date>
            <delta_ts>2016-06-16 09:32:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158827-20160616090317.patch</filename>
            <type>text/plain</type>
            <size>3477</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3ZTE5NmM5ZTRlYzEw
ODU3MzZmODg4NzczOTFmMWE5MmQ2NTY0NC4uMDM1YmMwMThmNTc3ZjlmMDc4ZjE2YmI1ZWUxMTUy
MDk3NmMzNjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE2LTA2LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQXZvaWQgc29tZSB0ZW1wb3Jh
cnkgU3RyaW5nIGFsbG9jYXRpb25zIGZvciBjb21tb24gSFRUUCBoZWFkZXJzIGluIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgQWRkIGEgSFRUUEhlYWRlck1hcDo6c2V0KCkgb3ZlcmxvYWQgdGFr
aW5nIGluIGEgQ0ZTdHJpbmdSZWYuIFRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBoYXMgYSBm
YXN0IHBhdGggd2hpY2ggZ2V0cyB0aGUgaW50ZXJuYWwgY2hhcmFjdGVycworICAgICAgICBvZiB0
aGUgQ0ZTdHJpbmdSZWYgd2hlbiBwb3NzaWJsZSBhbmQgY29uc3RydWN0cyBhIFN0cmluZ1ZpZXcg
Zm9yCisgICAgICAgIGl0IGluIG9yZGVyIHRvIGNhbGwgZmluZEhUVFBIZWFkZXJOYW1lKCkuIEFz
IGEgcmVzdWx0LCB3ZSBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIGEgdGVtcG9yYXJ5IFN0cmlu
ZyB3aGVuIGZpbmRIVFRQSGVhZGVyTmFtZSgpIHN1Y2NlZWRzLgorCisgICAgICAgIFRoaXMgbmV3
IEhUVFBIZWFkZXJNYXA6OnNldCgpIG92ZXJsb2FkIGlzIGNhbGxlZCBmcm9tIGJvdGggdGhlCisg
ICAgICAgIENGIGFuZCBDb2NvYSBpbXBsZW1lbnRhdGlvbnMgb2YgUmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1MYXp5SW5pdCgpLgorCisgICAgICAgIEkgaGF2ZSBjb25maXJtZWQgbG9jYWxseSBv
biBib3RoIE1hYyBhbmQgaU9TIHRoYXQgdGhlIGZhc3QgcGF0aAorICAgICAgICBpcyB1c2VkIH45
MyUgb2YgdGhlIHRpbWUuIENGU3RyaW5nR2V0Q1N0cmluZ1B0cigpIHJldHVybnMgbnVsbCBpbgor
ICAgICAgICByYXJlIGNhc2VzLCBjYXVzaW5nIHRoZSByZWd1bGFyIGNvZGUgcGF0aCB0byBiZSB1
c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OnNldCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggOTA1MTFl
YTc5Y2E1ZTBlZGJkNWM2MDU5NWRiMGU3YTAxNTUyNTViNS4uMDA3ODRlZTliN2VkMzEzMjQwNjc0
M2VlNmI2MDQ2MjRjNmFjZmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC02MSw2ICs2MSwyNiBAQCBTdHJpbmcgSFRUUEhl
YWRlck1hcDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9jb21t
b25IZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKIH0KIAorI2lmIFVTRShDRikKKwordm9pZCBIVFRQ
SGVhZGVyTWFwOjpzZXQoQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICAvLyBGYXN0IHBhdGg6IGF2b2lkIGNvbnN0cnVjdGluZyBhIHRlbXBvcmFyeSBTdHJpbmcg
aW4gdGhlIGNvbW1vbiBoZWFkZXIgY2FzZS4KKyAgICBpZiAoYXV0byogbmFtZUNoYXJhY3RlcnMg
PSBDRlN0cmluZ0dldENTdHJpbmdQdHIobmFtZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpIHsK
KyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgobmFtZSk7CisgICAg
ICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWU7CisgICAgICAgIGlmIChmaW5kSFRUUEhlYWRl
ck5hbWUoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obmFtZUNoYXJh
Y3RlcnMpLCBsZW5ndGgpLCBoZWFkZXJOYW1lKSkKKyAgICAgICAgICAgIG1fY29tbW9uSGVhZGVy
cy5zZXQoaGVhZGVyTmFtZSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Vu
Y29tbW9uSGVhZGVycy5zZXQoU3RyaW5nKG5hbWVDaGFyYWN0ZXJzLCBsZW5ndGgpLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXQoU3RyaW5nKG5hbWUpLCB2YWx1ZSk7
Cit9CisKKyNlbmRpZiAvLyBVU0UoQ0YpCisKIHZvaWQgSFRUUEhlYWRlck1hcDo6c2V0KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVFRQSGVhZGVyTmFt
ZSBoZWFkZXJOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuaAppbmRleCBmMGVjM2FiNzkyYzI1ZjkzYjJiMTMwZGVlOGZkYjYxMTY3YTU0YTNj
Li5jNWRlMmExZmQ4ODI2M2ZmMjViZjEyNmZhY2FjNGZmNGM1NTgzYTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtMTMxLDYgKzEz
MSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICBib29sIHJlbW92ZShjb25zdCBTdHJpbmcmKTsKIAorI2lmIFVT
RShDRikKKyAgICB2b2lkIHNldChDRlN0cmluZ1JlZiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKKyNlbmRpZgorCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldChIVFRQSGVhZGVyTmFt
ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXQoSFRUUEhlYWRlck5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogICAgIHZvaWQgYWRkKEhUVFBIZWFkZXJOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>