<?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>144542</bug_id>
          
          <creation_ts>2015-05-03 04:09:03 -0700</creation_ts>
          <short_desc>[SOUP] Network Cache: IOChannel operations are not sent to the right thread</short_desc>
          <delta_ts>2015-05-05 01:22:13 -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>WebKit2</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>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144541</dependson>
          <blocked>142821</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>koivisto</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091202</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-03 04:09:03 -0700</bug_when>
    <thetext>We are ignoring the given WorkQueue and running the async operations in the current thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091203</commentid>
    <comment_count>1</comment_count>
      <attachid>252264</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-03 04:17:21 -0700</bug_when>
    <thetext>Created attachment 252264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091204</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-03 04:20:05 -0700</bug_when>
    <thetext>Attachment 252264 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannel.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannel.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannel.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:144:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:196:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:254:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:265:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 3 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>1091564</commentid>
    <comment_count>3</comment_count>
      <attachid>252264</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-04 15:53:00 -0700</bug_when>
    <thetext>Comment on attachment 252264
Patch

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

Too bad all this code is boilerplate and repeated three times. Seems like instead you could have a helper function and that takes a single lambda to abstract away which of the three IOChannel functions is called.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:162
&gt; +    GMainLoopSource::scheduleAndDeleteOnDestroy(&quot;[WebKit] IOChannel::read&quot;, std::function&lt;void()&gt;([channel, offset, size, completionHandler] {
&gt; +        channel-&gt;read(offset, size, completionHandler);
&gt; +    }), G_PRIORITY_DEFAULT, nullptr, g_main_context_default());

Why is that typecast to std::function needed? Should just work without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091702</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-04 22:56:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 252264 [details]
&gt; Patch

Thanks for the review.

&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252264&amp;action=review
&gt; 
&gt; Too bad all this code is boilerplate and repeated three times. Seems like
&gt; instead you could have a helper function and that takes a single lambda to
&gt; abstract away which of the three IOChannel functions is called.

Will do it.

&gt; &gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:162
&gt; &gt; +    GMainLoopSource::scheduleAndDeleteOnDestroy(&quot;[WebKit] IOChannel::read&quot;, std::function&lt;void()&gt;([channel, offset, size, completionHandler] {
&gt; &gt; +        channel-&gt;read(offset, size, completionHandler);
&gt; &gt; +    }), G_PRIORITY_DEFAULT, nullptr, g_main_context_default());
&gt; 
&gt; Why is that typecast to std::function needed? Should just work without it.

There were some problemas with some compilers, see bug #131006, for example. I thought there were issues with GCC, but it seems it&apos;s MSVC, so it doesn&apos;t affect us here, I will remove the casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091708</commentid>
    <comment_count>5</comment_count>
      <attachid>252264</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-05 00:00:35 -0700</bug_when>
    <thetext>Comment on attachment 252264
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:157
&gt; +    // Using nullptr as queue submits the result to the main context.
&gt; +    if (g_main_context_get_thread_default() == g_main_context_default()) {
&gt; +        read(offset, size, completionHandler);
&gt; +        return;

I&apos;ve also realized that this is not correct, g_main_context_get_thread_default() is usually NULL in the main thread, and then != g_main_context_default(). Also this particular case is very unlikely to happen, so I think it&apos;s safer to always schedule the task to the main context when the queue is nullptr. That also simplifies the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091719</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-05 01:22:13 -0700</bug_when>
    <thetext>Committed r183801: &lt;http://trac.webkit.org/changeset/183801&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252264</attachid>
            <date>2015-05-03 04:17:21 -0700</date>
            <delta_ts>2015-05-04 15:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-network-cache-io-thread.diff</filename>
            <type>text/plain</type>
            <size>7517</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MjhjZWI2Li41OTQxNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTUtMDUtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hlOiBJT0NoYW5uZWwgb3BlcmF0aW9ucyBh
cmUgbm90IHNlbnQgdG8gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYXJlIGlnbm9yaW5nIHRoZSBnaXZlbiBXb3JrUXVl
dWUgYW5kIHJ1bm5pbmcgdGhlIGFzeW5jCisgICAgICAgIG9wZXJhdGlvbnMgaW4gdGhlIGN1cnJl
bnQgdGhyZWFkLiBDaGVjayB0aGUgZ2l2ZW4gV29ya1F1ZXVlCisgICAgICAgIGluc3RlYWQgYW5k
IHNjaGVkdWxlIHRoZSBvcGVyYXRpb24gdG8gdGhlIGdpdmVuIHF1ZXVlLiBJZiB0aGUKKyAgICAg
ICAgZ2l2ZW4gcXVldWUgaXMgbnVsbHB0ciwgd2hpY2ggbWVhbnMgdGhlIG9wZXJhdGlvbiBzaG91
bGQgYmUgcnVuIGluCisgICAgICAgIHRoZSBtYWluIGNvbnRleHQsIHRoZSBvcGVyYXRpb24gaXMg
cnVuIGRpcmVjdGx5IGlmIHRoZSBjdXJyZW50CisgICAgICAgIGNvbnRleHQgaXMgdGhlIG1haW4g
b25lIG9yIHNlbnQgdG8gdGhlIG1haW4gY29udGV4dCB1c2luZyBhCisgICAgICAgIEdNYWluTG9v
cFNvdXJjZS4KKworICAgICAgICBGaXhlcyBjcmFzaGVzIGR1ZSB0byBhc3NlcnRzIHdoZW4gcnVu
bmluZyBkaXNrLWNhY2hlIGxheW91dCB0ZXN0cworICAgICAgICBpbiBhIERlYnVnIGJ1aWxkLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OndyaXRlKToKKwogMjAxNS0w
NS0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1gxMV0gQWRkIFhVbmlxdWVQdHIgYW5kIFhVbmlxdWVSZXNvdXJjZSB0byBhdXRvbWF0aWNh
bGx5IGZyZWUgWCByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKaW5kZXggN2MwNDIxMy4u
Yjg4YTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKQEAgLTYwLDYgKzYwLDEyIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIElPQ2hh
bm5lbDo6VHlwZSk7CiAKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIHJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPik7CisgICAg
dm9pZCByZWFkU3luYyhzaXplX3Qgb2Zmc2V0LCBzaXplX3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
RGF0YSYsIGludCBlcnJvcik+KTsKKyAgICB2b2lkIHdyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0
IERhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGludCBlcnJvcik+KTsKKyNlbmRpZgorCiAgICAg
U3RyaW5nIG1fcGF0aDsKICAgICBUeXBlIG1fdHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5u
ZWxTb3VwLmNwcAppbmRleCA3ODYwNGEzLi5jNjJmYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWxTb3VwLmNwcApAQCAtMjksNiArMjksOCBAQAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
KQogCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRmlsZVN5c3RlbVBvc2l4LmgiCisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011
dGV4TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEyNSw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBpbnB1dFN0cmVh
bVJlYWRSZWFkeUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJl
cwogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGlucHV0U3Ry
ZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJ
T0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSosIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChtX2lucHV0U3RyZWFtKTsKIApAQCAtMTM5LDggKzE0MSwyOSBAQCB2b2lkIElPQ2hh
bm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiwgc3RkOjpm
dW5jdGlvbjx2b2lkCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFj
az4oaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFzeW5jRGF0YSk7CiB9CiAKK3ZvaWQg
SU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1
ZXVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsKHRoaXMpOworICAgIGlmIChx
dWV1ZSkgeworICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2goW2NoYW5uZWwsIG9mZnNldCwgc2l6ZSwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNoYW5uZWwtPnJlYWQob2Zmc2V0LCBz
aXplLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gVXNpbmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQg
dG8gdGhlIG1haW4gY29udGV4dC4KKyAgICBpZiAoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9k
ZWZhdWx0KCkgPT0gZ19tYWluX2NvbnRleHRfZGVmYXVsdCgpKSB7CisgICAgICAgIHJlYWQob2Zm
c2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJbV2ViS2l0
XSBJT0NoYW5uZWw6OnJlYWQiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oW2NoYW5uZWwsIG9mZnNl
dCwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY2hhbm5lbC0+cmVhZChvZmZz
ZXQsIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB9KSwgR19QUklPUklUWV9ERUZBVUxU
LCBudWxscHRyLCBnX21haW5fY29udGV4dF9kZWZhdWx0KCkpOworfQorCiAvLyBGSVhNRTogSXQg
d291bGQgYmUgYmV0dGVyIHRvIGRvIHdpdGhvdXQgdGhpcy4KLXZvaWQgSU9DaGFubmVsOjpyZWFk
U3luYyhzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiwgc3RkOjpmdW5jdGlv
bjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hh
bm5lbDo6cmVhZFN5bmMoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoRGF0YSYsIGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChtX2lucHV0U3RyZWFtKTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHN0ZDo6bWluKHNpemUs
IGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpOwpAQCAtMTcwLDYgKzE5MywzNiBAQCB2b2lkIElPQ2hh
bm5lbDo6cmVhZFN5bmMoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSosIHN0
ZDo6ZnVuY3Rpb248dgogICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIDApOwogfQogCit2b2lk
IElPQ2hhbm5lbDo6cmVhZFN5bmMoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSogcXVldWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+IGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHN0YXRpYyBHTXV0ZXggbXV0ZXg7CisgICAgc3RhdGljIEdDb25k
IGNvbmRpdGlvbjsKKworICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWwodGhpcyk7CisgICAg
aWYgKHF1ZXVlKSB7CisgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtdXRl
eCk7CisgICAgICAgIHF1ZXVlLT5kaXNwYXRjaChbY2hhbm5lbCwgb2Zmc2V0LCBzaXplLCBjb21w
bGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgY2hhbm5lbC0+cmVhZFN5bmMob2Zmc2V0LCBz
aXplLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgICAgICBnX2NvbmRfc2lnbmFsKCZjb25k
aXRpb24pOworICAgICAgICB9KTsKKyAgICAgICAgZ19jb25kX3dhaXQoJmNvbmRpdGlvbiwgJm11
dGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFVzaW5nIG51bGxwdHIgYXMg
cXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBtYWluIGNvbnRleHQuCisgICAgaWYgKGdf
bWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpID09IGdfbWFpbl9jb250ZXh0X2RlZmF1
bHQoKSkgeworICAgICAgICByZWFkU3luYyhvZmZzZXQsIHNpemUsIGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRl
eD4gbG9jayhtdXRleCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9u
RGVzdHJveSgiW1dlYktpdF0gSU9DaGFubmVsOjpyZWFkU3luYyIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPihbY2hhbm5lbCwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAg
ICBjaGFubmVsLT5yZWFkU3luYyhvZmZzZXQsIHNpemUsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICAgICAgZ19jb25kX3NpZ25hbCgmY29uZGl0aW9uKTsKKyAgICB9KSwgR19QUklPUklUWV9ERUZB
VUxULCBudWxscHRyLCBnX21haW5fY29udGV4dF9kZWZhdWx0KCkpOworICAgIGdfY29uZF93YWl0
KCZjb25kaXRpb24sICZtdXRleCk7Cit9CisKIHN0cnVjdCBXcml0ZUFzeW5jRGF0YSB7CiAgICAg
UmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbDsKICAgICBHUmVmUHRyPFNvdXBCdWZmZXI+IGJ1ZmZl
cjsKQEAgLTE5OCw3ICsyNTEsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRTdHJlYW1Xcml0ZVJlYWR5
Q2FsbGJhY2soR091dHB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob3V0cHV0U3RyZWFtV3JpdGVSZWFk
eUNhbGxiYWNrKSwgYXN5bmNEYXRhLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjp3
cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5u
ZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoaW50IGVycm9yKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fb3V0
cHV0U3RyZWFtIHx8IG1faW9TdHJlYW0pOwogCkBAIC0yMDksNiArMjYyLDI4IEBAIHZvaWQgSU9D
aGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUq
LCBzdGQ6OmZ1bmN0aW9uCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxs
YmFjaz4ob3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxiYWNrKSwgYXN5bmNEYXRhKTsKIH0KIAor
dm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdv
cmtRdWV1ZSogcXVldWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50IGVycm9yKT4gY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKKyAgICBp
ZiAocXVldWUpIHsKKyAgICAgICAgcXVldWUtPmRpc3BhdGNoKFtjaGFubmVsLCBvZmZzZXQsIGRh
dGEsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBjaGFubmVsLT53cml0ZShvZmZz
ZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBVc2luZyBudWxscHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJl
c3VsdCB0byB0aGUgbWFpbiBjb250ZXh0LgorICAgIGlmIChnX21haW5fY29udGV4dF9nZXRfdGhy
ZWFkX2RlZmF1bHQoKSA9PSBnX21haW5fY29udGV4dF9kZWZhdWx0KCkpIHsKKyAgICAgICAgd3Jp
dGUob2Zmc2V0LCBkYXRhLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJb
V2ViS2l0XSBJT0NoYW5uZWw6OndyaXRlIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KFtjaGFubmVs
LCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNoYW5uZWwtPndy
aXRlKG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIH0pLCBHX1BSSU9SSVRZ
X0RFRkFVTFQsIG51bGxwdHIsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7CisKK30KKwogfSAv
LyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAo=
</data>
<flag name="review"
          id="277105"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>