<?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>135727</bug_id>
          
          <creation_ts>2014-08-07 15:08:56 -0700</creation_ts>
          <short_desc>Cached file backed resources don&apos;t make it to the Web Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled</short_desc>
          <delta_ts>2014-08-12 15:51:07 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135554</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>kling</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1027647</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-07 15:08:56 -0700</bug_when>
    <thetext>If we have a resource that is file backed in CFNetwork, then we try to send that data over to the web process so that the web process uses file backed memory. Unfortunately, this is not working on iOS because iOS uses the data array calbacks. We have this check in NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer().

    if (!buffer-&gt;hasPlatformData())
        return;

For data array callbacks, hasPlatformData() will return false since SharedBuffer has a data array and not a single CFDataRef. This breaks the optimization. If I comment out the above code and fall through, the code does

    RetainPtr&lt;CFDataRef&gt; data = buffer-&gt;createCFData();
    if (_CFURLCacheIsResponseDataMemMapped(cache, data.get()) == kCFBooleanFalse)
        return;


createCFData() will do the right thing and the CFNetwork SPI will return true which will make our optimization work again.

The second mechanism - the disk cache notification works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027648</commentid>
    <comment_count>1</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-07 15:09:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/17947880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027724</commentid>
    <comment_count>2</comment_count>
      <attachid>236251</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-07 18:17:20 -0700</bug_when>
    <thetext>Created attachment 236251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027725</commentid>
    <comment_count>3</comment_count>
      <attachid>236251</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-07 18:18:48 -0700</bug_when>
    <thetext>Comment on attachment 236251
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        (WebCore::SharedBuffer::createCFData):

Is there a better name I could use for getCFDataIfAvailable? I don&apos;t like the mismatch of get and create but createCFDataIfAvailable() seemed odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027756</commentid>
    <comment_count>4</comment_count>
      <attachid>236251</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-08-07 20:58:36 -0700</bug_when>
    <thetext>Comment on attachment 236251
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +        (WebCore::SharedBuffer::createCFData):
&gt; 
&gt; Is there a better name I could use for getCFDataIfAvailable? I don&apos;t like the mismatch of get and create but createCFDataIfAvailable() seemed odd.

createCFDataIfInternallyRepresentedAsCFData()? createCFDataNoCopy()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027782</commentid>
    <comment_count>5</comment_count>
      <attachid>236251</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-07 22:39:16 -0700</bug_when>
    <thetext>Comment on attachment 236251
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt;&gt; +        (WebCore::SharedBuffer::createCFData):
&gt;&gt; 
&gt;&gt; Is there a better name I could use for getCFDataIfAvailable? I don&apos;t like the mismatch of get and create but createCFDataIfAvailable() seemed odd.
&gt; 
&gt; createCFDataIfInternallyRepresentedAsCFData()? createCFDataNoCopy()?

copyCFDataNoCreate() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028260</commentid>
    <comment_count>6</comment_count>
      <attachid>236390</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-11 11:56:06 -0700</bug_when>
    <thetext>Created attachment 236390
Patch2

I like copyCFDataNoCreate. Patch with new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028421</commentid>
    <comment_count>7</comment_count>
      <attachid>236390</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-11 22:30:01 -0700</bug_when>
    <thetext>Comment on attachment 236390
Patch2

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Add SharedBuffer::copyCFDataNoCreate() which returns CFDataRef if it has one. Refactor
&gt; +        this code out of createCFData().

I don’t like the grammar of the phrase “copy CFData no create”. I’d prefer copyExistingCFData or copyCFDataWithoutCreating.

&gt; Source/WebCore/platform/mac/SharedBufferMac.mm:148
&gt; +    RetainPtr&lt;CFDataRef&gt; cfData = copyCFDataNoCreate();
&gt; +    if (cfData)
&gt; +        return cfData;

Would be nice to put the definition inside the if statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028422</commentid>
    <comment_count>8</comment_count>
      <attachid>236390</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-11 22:30:46 -0700</bug_when>
    <thetext>Comment on attachment 236390
Patch2

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

&gt; Source/WebKit2/ChangeLog:13
&gt; +        so that SharedBuffer can take car of the data array case.

typo: &quot;take car&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028423</commentid>
    <comment_count>9</comment_count>
      <attachid>236390</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-11 22:31:39 -0700</bug_when>
    <thetext>Comment on attachment 236390
Patch2

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        this code out of createCFData().
&gt; 
&gt; I don’t like the grammar of the phrase “copy CFData no create”. I’d prefer copyExistingCFData or copyCFDataWithoutCreating.

Hmm, why copy? It should just be existingCFData and should not return a RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028554</commentid>
    <comment_count>10</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-12 11:42:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 236390 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236390&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:10
&gt; &gt;&gt; +        this code out of createCFData().
&gt; &gt; 
&gt; &gt; I don’t like the grammar of the phrase “copy CFData no create”. I’d prefer copyExistingCFData or copyCFDataWithoutCreating.
&gt; 
&gt; Hmm, why copy? It should just be existingCFData and should not return a RetainPtr.

I like this! I&apos;ll change it to existingCFData and return a raw pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028640</commentid>
    <comment_count>11</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-08-12 15:51:07 -0700</bug_when>
    <thetext>Committed r172502: &lt;http://trac.webkit.org/changeset/172502&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236251</attachid>
            <date>2014-08-07 18:17:20 -0700</date>
            <delta_ts>2014-08-11 11:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135727-20140807181708.patch</filename>
            <type>text/plain</type>
            <size>5480</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0NDllMTI0MjYxYTFh
MWJlOTEwYTY2NDczNDQ3MDEwZGMwMzRlOS4uZTBiN2I2MzRjZjIzYWQ0MDA5NGFjYTRjNGY1ZTE3
ODZmM2RmNTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE0LTA4LTA3ICBQcmF0
aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAorICAgICAgICBDYWNoZWQgZmlsZSBi
YWNrZWQgcmVzb3VyY2VzIGRvbid0IG1ha2UgaXQgdG8gdGhlIFdlYiBQcm9jZXNzIHdoZW4gTkVU
V09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sgaXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NzI3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xNzk0Nzg4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgU2hhcmVkQnVmZmVyOjpnZXRDRkRhdGFJZkF2YWlsYWJsZSgpIHdoaWNoIHJl
dHVybnMgQ0ZEYXRhUmVmIGlmIGl0IGhhcyBvbmUuIFJlZmFjdG9yCisgICAgICAgIHRoaXMgY29k
ZSBvdXQgb2YgY3JlYXRlQ0ZEYXRhKCkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2hhcmVkQnVmZmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpnZXRD
RkRhdGFJZkF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSk6CisKKzIwMTQtMDgtMDcgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUu
Y29tPgorCiAgICAgICAgIFJhbmRvbSByZXNvdXJjZSByZXBsYWNlbWVudCBvbiBiZXRhLmljbG91
ZC5jb20KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTY4NQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc5Mzc5NzU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWMy
ZDU3MTFmYjI0MjVkZmYwNjhjNWY5M2IyMTgxYzFkMjczZmU1ZC4uZDY0MWVhZjQwZjc5Njk4MDQw
YmUwNmYxZDU2OTUzODMzYmY3YjZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0
LTA4LTA3ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBD
YWNoZWQgZmlsZSBiYWNrZWQgcmVzb3VyY2VzIGRvbid0IG1ha2UgaXQgdG8gdGhlIFdlYiBQcm9j
ZXNzIHdoZW4gTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sgaXMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NzI3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNzk0Nzg4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVy
KCkgYXNzdW1lZCB0aGF0IHdlIGhhdmUgYSBmaWxlIGJhY2tlZCByZXNvdXJjZSBvbmx5IGlmCisg
ICAgICAgIHdlIGhhZCBhIENGRGF0YVJlZiAocGxhdGZvcm1EYXRhKCkpIGluIFNoYXJlZEJ1ZmZl
ci4gVGhpcyBpcyB3cm9uZyB3aGVuIHdlIHVzZSB0aGUgZGF0YQorICAgICAgICBhcnJheSBjYWxs
YmFja3Mgc2luY2UgdGhlIGZpbGUgYmFja2VkIGJ1ZmZlciBjb3VsZCBiZSBpbiB0aGUgZGF0YSBh
cnJheS4gSW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgIG9uIGhhc1BsYXRmb3JtRGF0YSgpLCBl
eHBsaWNpdGx5IGFzayB0aGUgU2hhcmVkQnVmZmVyIHRvIGdpdmUgdXMgYSBDRkRhdGFSZWYgaWYg
aXQgaGFzIG9uZQorICAgICAgICBzbyB0aGF0IFNoYXJlZEJ1ZmZlciBjYW4gdGFrZSBjYXIgb2Yg
dGhlIGRhdGEgYXJyYXkgY2FzZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcik6CisKIDIwMTQt
MDgtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFVzZSBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uIGFsc28gZm9yIFdlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxY2I3NjcxNGRjZGYw
ZTJiNzI4MWQyMWUyMWVlYTkwZDgzMzYyODQ1Li4yZWM4YzI0ZjljYmQ1NjNmYmIzOGE5MTRjN2Vh
YTY0MWRhZGFlZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjQyLDYgKzI0Miw3IEBAIF9f
Wk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNEYXRhCiBfX1pON1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjExYWRvcHRWZWN0b3JFUk4zV1RGNlZlY3RvckljTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMmNyZWF0ZUNGRGF0
YUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKK19fWk43V2Vi
Q29yZTEyU2hhcmVkQnVmZmVyMjBnZXRDRkRhdGFJZkF2YWlsYWJsZUV2CiBfX1pON1dlYkNvcmUx
MlNoYXJlZEJ1ZmZlcjI0Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5kRVBLY2oKIF9fWk43V2ViQ29yZTEyU2hh
cmVkQnVmZmVyNmFwcGVuZEVQUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IGY0ZGI5NjA5NjkyMjNiZjE5YjVhMjZiZDYyZTBkMjYxYTliMTZiNzAuLjk5ODYyNzk0
NGU1ZGNiYzdhM2FkY2QzMGZlODAwZDQwZGUxZDM4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIFVT
RShDRikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBnZXRDRkRhdGFJZkF2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gd3JhcENGRGF0YShDRkRhdGFSZWYpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tCmluZGV4IGY5
NzMyOGZmMGZkMjRmNGIyYzMzZjljNDZlNzJlODY1NTRkNDVhZGUuLjUyZWMxYzRmMmJiOTA3ZjVh
OTQ1MjYwZGNlNjlmZjA0YzI0N2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NoYXJlZEJ1ZmZlck1hYy5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIFJldGFpblB0cjxOU0Rh
dGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkKICAgICByZXR1cm4gYWRvcHROUygoTlNE
YXRhICopY3JlYXRlQ0ZEYXRhKCkubGVha1JlZigpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJl
Zj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQorUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpnZXRDRkRhdGFJZkF2YWlsYWJsZSgpCiB7CiAgICAgaWYgKG1fY2ZEYXRhKQog
ICAgICAgICByZXR1cm4gbV9jZkRhdGE7CkBAIC0xMzgsNiArMTM4LDE1IEBAIFJldGFpblB0cjxD
RkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkKICAgICAgICAgcmV0dXJuIG1f
ZGF0YUFycmF5LmF0KDApOwogI2VuZGlmCiAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmV0
YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQoreworICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGdldENGRGF0YUlmQXZhaWxhYmxlKCk7CisgICAg
aWYgKGNmRGF0YSkKKyAgICAgICAgcmV0dXJuIGNmRGF0YTsKKwogI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKQogICAgIGlmIChpc01lbW9yeU1hcHBlZCgpKQogICAgICAgICByZXR1cm4gYWRv
cHRDRigoQ0ZEYXRhUmVmKWFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10g
aW5pdFdpdGhNZW1vcnlNYXBwZWRTaGFyZWRCdWZmZXI6KnRoaXNdKS5sZWFrUmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJj
ZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXggNjMwNDhiMWRmYjc2ZmI1NWJiNmY3M2JlYjkzNjQ3
Y2YyZWFlN2FjZC4uMmY1NzJkYWE5ZjE3NjMxMGI0YTAyNjRmNzQ4MjhmZDA3ZjNkMmVjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJj
ZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC05MywxMCArOTMsMTAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoU2hh
cmVhYmxlUmVzb3UKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IWJ1ZmZlci0+aGFzUGxhdGZvcm1EYXRhKCkpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0
YSA9IGJ1ZmZlci0+Z2V0Q0ZEYXRhSWZBdmFpbGFibGUoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBidWZmZXItPmNy
ZWF0ZUNGRGF0YSgpOworICAgIAogICAgIGlmIChfQ0ZVUkxDYWNoZUlzUmVzcG9uc2VEYXRhTWVt
TWFwcGVkKGNhY2hlLCBkYXRhLmdldCgpKSA9PSBrQ0ZCb29sZWFuRmFsc2UpCiAgICAgICAgIHJl
dHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236390</attachid>
            <date>2014-08-11 11:56:06 -0700</date>
            <delta_ts>2014-08-11 22:31:39 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>135727-2.patch</filename>
            <type>text/plain</type>
            <size>4901</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTgxM2VkLi40M2UxYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDgtMTEgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisg
ICAgICAgIENhY2hlZCBmaWxlIGJhY2tlZCByZXNvdXJjZXMgZG9uJ3QgbWFrZSBpdCB0byB0aGUg
V2ViIFByb2Nlc3Mgd2hlbiBORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSyBpcyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3OTQ3ODgwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXI6OmNvcHlDRkRhdGFO
b0NyZWF0ZSgpIHdoaWNoIHJldHVybnMgQ0ZEYXRhUmVmIGlmIGl0IGhhcyBvbmUuIFJlZmFjdG9y
CisgICAgICAgIHRoaXMgY29kZSBvdXQgb2YgY3JlYXRlQ0ZEYXRhKCkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5Q0ZEYXRhTm9DcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEpOgorCiAyMDE0LTA4LTExICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTcyMzkzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3MmQxNmRkLi5kODZhODE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjQyLDYgKzI0Miw3IEBAIF9fWk43V2ViQ29yZTEyU2hhcmVk
QnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNEYXRhCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEx
YWRvcHRWZWN0b3JFUk4zV1RGNlZlY3RvckljTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQog
X19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMmNyZWF0ZUNGRGF0YUV2CiBfX1pON1dlYkNvcmUx
MlNoYXJlZEJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKK19fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVy
MThjb3B5Q0ZEYXRhTm9DcmVhdGVFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIyNGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyU2hhcmVk
QnVmZmVyNmFwcGVuZEVQS2NqCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjZhcHBlbmRFUFMw
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmNGRiOTYwLi5hZjJm
MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNzQsNiArNzQs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY29weUNGRGF0YU5v
Q3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB3cmFwQ0ZEYXRh
KENGRGF0YVJlZik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NoYXJlZEJ1ZmZlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
aGFyZWRCdWZmZXJNYWMubW0KaW5kZXggZjk3MzI4ZmYuLjBlZjZiMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZEJ1ZmZlck1hYy5tbQpAQCAtMTI4LDcgKzEyOCw3
IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkKICAgICBy
ZXR1cm4gYWRvcHROUygoTlNEYXRhICopY3JlYXRlQ0ZEYXRhKCkubGVha1JlZigpKTsKIH0KIAot
UmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQorUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjb3B5Q0ZEYXRhTm9DcmVhdGUoKQogewogICAg
IGlmIChtX2NmRGF0YSkKICAgICAgICAgcmV0dXJuIG1fY2ZEYXRhOwpAQCAtMTM4LDYgKzEzOCwx
NSBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpCiAg
ICAgICAgIHJldHVybiBtX2RhdGFBcnJheS5hdCgwKTsKICNlbmRpZgogCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBjb3B5Q0ZEYXRhTm9D
cmVhdGUoKTsKKyAgICBpZiAoY2ZEYXRhKQorICAgICAgICByZXR1cm4gY2ZEYXRhOworCiAjaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCiAgICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkpCiAgICAg
ICAgIHJldHVybiBhZG9wdENGKChDRkRhdGFSZWYpYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZm
ZXJEYXRhIGFsbG9jXSBpbml0V2l0aE1lbW9yeU1hcHBlZFNoYXJlZEJ1ZmZlcjoqdGhpc10pLmxl
YWtSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBhYjk2ZC4uZjE4YzI4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDE0LTA4LTExICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxl
LmNvbT4KKworICAgICAgICBDYWNoZWQgZmlsZSBiYWNrZWQgcmVzb3VyY2VzIGRvbid0IG1ha2Ug
aXQgdG8gdGhlIFdlYiBQcm9jZXNzIHdoZW4gTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM1NzI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNzk0Nzg4MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0cnlHZXRTaGFyZWFibGVIYW5k
bGVGcm9tU2hhcmVkQnVmZmVyKCkgYXNzdW1lZCB0aGF0IHdlIGhhdmUgYSBmaWxlIGJhY2tlZCBy
ZXNvdXJjZSBvbmx5IGlmCisgICAgICAgIHdlIGhhZCBhIENGRGF0YVJlZiAocGxhdGZvcm1EYXRh
KCkpIGluIFNoYXJlZEJ1ZmZlci4gVGhpcyBpcyB3cm9uZyB3aGVuIHdlIHVzZSB0aGUgZGF0YQor
ICAgICAgICBhcnJheSBjYWxsYmFja3Mgc2luY2UgdGhlIGZpbGUgYmFja2VkIGJ1ZmZlciBjb3Vs
ZCBiZSBpbiB0aGUgZGF0YSBhcnJheS4gSW5zdGVhZCBvZiByZWx5aW5nCisgICAgICAgIG9uIGhh
c1BsYXRmb3JtRGF0YSgpLCBleHBsaWNpdGx5IGFzayB0aGUgU2hhcmVkQnVmZmVyIHRvIGdpdmUg
dXMgYSBDRkRhdGFSZWYgaWYgaXQgaGFzIG9uZQorICAgICAgICBzbyB0aGF0IFNoYXJlZEJ1ZmZl
ciBjYW4gdGFrZSBjYXIgb2YgdGhlIGRhdGEgYXJyYXkgY2FzZS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJl
ZEJ1ZmZlcik6CisKIDIwMTQtMDgtMTEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBFRkwgYnVpbGQgZml4IHNpbmNlIHIxNzIz
ODUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCA2MzA0OGIxLi40MGRkYTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNl
TG9hZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFy
ZWFibGVSZXNvdQogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
YnVmZmVyLT5oYXNQbGF0Zm9ybURhdGEoKSkKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
ID0gYnVmZmVyLT5jb3B5Q0ZEYXRhTm9DcmVhdGUoKTsKKyAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBidWZmZXItPmNyZWF0
ZUNGRGF0YSgpOwogICAgIGlmIChfQ0ZVUkxDYWNoZUlzUmVzcG9uc2VEYXRhTWVtTWFwcGVkKGNh
Y2hlLCBkYXRhLmdldCgpKSA9PSBrQ0ZCb29sZWFuRmFsc2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="261006"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>