<?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>129437</bug_id>
          
          <creation_ts>2014-02-27 10:44:57 -0800</creation_ts>
          <short_desc>[iOS] selectionImageForcingBlackText should return autoreleased object</short_desc>
          <delta_ts>2014-03-01 15:25:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985247</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-27 10:44:57 -0800</bug_when>
    <thetext>[WebHTMLView(WebDocumentPrivateProtocols) selectionImageForcingBlackText:] returns a retained CGImageRef on iOS. It should return an autoreleased object like we do on OS X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985248</commentid>
    <comment_count>1</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-27 10:45:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/15810384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985251</commentid>
    <comment_count>2</comment_count>
      <attachid>225393</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-27 10:46:23 -0800</bug_when>
    <thetext>Created attachment 225393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985252</commentid>
    <comment_count>3</comment_count>
      <attachid>225393</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-27 10:48:15 -0800</bug_when>
    <thetext>Comment on attachment 225393
Patch

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

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6572
&gt; +    return (CGImageRef)CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef());

I know C-style cast is frowned upon, but static_cast didn&apos;t work for me here.

/Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6572:12: error: cannot cast from type &apos;id&apos; to pointer type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;)
    return static_cast&lt;CGImageRef&gt;(CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef()));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Let me know if there&apos;s something better I could do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985304</commentid>
    <comment_count>4</comment_count>
      <attachid>225393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-27 12:21:22 -0800</bug_when>
    <thetext>Comment on attachment 225393
Patch

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

&gt;&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6572
&gt;&gt; +    return (CGImageRef)CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef());
&gt; 
&gt; I know C-style cast is frowned upon, but static_cast didn&apos;t work for me here.
&gt; 
&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6572:12: error: cannot cast from type &apos;id&apos; to pointer type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;)
&gt;     return static_cast&lt;CGImageRef&gt;(CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef()));
&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 1 error generated.
&gt; 
&gt; Let me know if there&apos;s something better I could do here.

I think we should prefer CFAutorelease here instead of CFBridgingRelease. CFBridgingRelease is good when we want to turn a CF object into an autoreleased NS object, but when we just want to do a CF autorelease, CFAutorelease seems a better choice.

If we did that, then the static_cast would probably work, or might not be needed at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985470</commentid>
    <comment_count>5</comment_count>
      <attachid>225393</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-27 22:47:55 -0800</bug_when>
    <thetext>Comment on attachment 225393
Patch

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

&gt;&gt;&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6572
&gt;&gt;&gt; +    return (CGImageRef)CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef());
&gt;&gt; 
&gt;&gt; I know C-style cast is frowned upon, but static_cast didn&apos;t work for me here.
&gt;&gt; 
&gt;&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6572:12: error: cannot cast from type &apos;id&apos; to pointer type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;)
&gt;&gt;     return static_cast&lt;CGImageRef&gt;(CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef()));
&gt;&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt; 1 error generated.
&gt;&gt; 
&gt;&gt; Let me know if there&apos;s something better I could do here.
&gt; 
&gt; I think we should prefer CFAutorelease here instead of CFBridgingRelease. CFBridgingRelease is good when we want to turn a CF object into an autoreleased NS object, but when we just want to do a CF autorelease, CFAutorelease seems a better choice.
&gt; 
&gt; If we did that, then the static_cast would probably work, or might not be needed at all.

So I tried CFAutorelease. Since CFAutorelease will crash if passed null, I wrote the code as

    CGImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
    return dragImage ? CFAutorelease(dragImage) : nil;

clang didn&apos;t like that

/Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:12: error: cannot initialize return object of type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) with an rvalue of type &apos;CFTypeRef&apos; (aka &apos;const void *&apos;)
    return dragImage ? CFAutorelease(dragImage) : nil;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Next up, static_cast

/Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:24: error: static_cast from &apos;CFTypeRef&apos; (aka &apos;const void *&apos;) to &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) casts away qualifiers
    return dragImage ? static_cast&lt;CGImageRef&gt;(CFAutorelease(dragImage)) : nil;
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Do I need a const_cast?

    return dragImage ? static_cast&lt;CGImageRef&gt;(const_cast&lt;void *&gt;(CFAutorelease(dragImage))) : nil;

That seems ugly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985555</commentid>
    <comment_count>6</comment_count>
      <attachid>225393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-28 07:47:33 -0800</bug_when>
    <thetext>Comment on attachment 225393
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6572
&gt;&gt;&gt;&gt; +    return (CGImageRef)CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef());
&gt;&gt;&gt; 
&gt;&gt;&gt; I know C-style cast is frowned upon, but static_cast didn&apos;t work for me here.
&gt;&gt;&gt; 
&gt;&gt;&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6572:12: error: cannot cast from type &apos;id&apos; to pointer type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;)
&gt;&gt;&gt;     return static_cast&lt;CGImageRef&gt;(CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef()));
&gt;&gt;&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt;&gt; 1 error generated.
&gt;&gt;&gt; 
&gt;&gt;&gt; Let me know if there&apos;s something better I could do here.
&gt;&gt; 
&gt;&gt; I think we should prefer CFAutorelease here instead of CFBridgingRelease. CFBridgingRelease is good when we want to turn a CF object into an autoreleased NS object, but when we just want to do a CF autorelease, CFAutorelease seems a better choice.
&gt;&gt; 
&gt;&gt; If we did that, then the static_cast would probably work, or might not be needed at all.
&gt; 
&gt; So I tried CFAutorelease. Since CFAutorelease will crash if passed null, I wrote the code as
&gt; 
&gt;     CGImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
&gt;     return dragImage ? CFAutorelease(dragImage) : nil;
&gt; 
&gt; clang didn&apos;t like that
&gt; 
&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:12: error: cannot initialize return object of type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) with an rvalue of type &apos;CFTypeRef&apos; (aka &apos;const void *&apos;)
&gt;     return dragImage ? CFAutorelease(dragImage) : nil;
&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 1 error generated.
&gt; 
&gt; Next up, static_cast
&gt; 
&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:24: error: static_cast from &apos;CFTypeRef&apos; (aka &apos;const void *&apos;) to &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) casts away qualifiers
&gt;     return dragImage ? static_cast&lt;CGImageRef&gt;(CFAutorelease(dragImage)) : nil;
&gt;                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 1 error generated.
&gt; 
&gt; Do I need a const_cast?
&gt; 
&gt;     return dragImage ? static_cast&lt;CGImageRef&gt;(const_cast&lt;void *&gt;(CFAutorelease(dragImage))) : nil;
&gt; 
&gt; That seems ugly...

OK, how about this?

    CFDragImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
    if (dragImage)
        CFAutorelease(dragImage);
    return dragImage;

I suppose this is really interim code. When bug 125241 is fixed, this should be changed to:

    return createDragImageForSelection(*coreFrame, forceBlackText).autorelease();

Or whatever name we choose for the autorelease member function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985556</commentid>
    <comment_count>7</comment_count>
      <attachid>225393</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-28 07:51:09 -0800</bug_when>
    <thetext>Comment on attachment 225393
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6572
&gt;&gt;&gt;&gt;&gt; +    return (CGImageRef)CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef());
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I know C-style cast is frowned upon, but static_cast didn&apos;t work for me here.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6572:12: error: cannot cast from type &apos;id&apos; to pointer type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;)
&gt;&gt;&gt;&gt;     return static_cast&lt;CGImageRef&gt;(CFBridgingRelease(createDragImageForSelection(*coreFrame, forceBlackText).leakRef()));
&gt;&gt;&gt;&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt;&gt;&gt; 1 error generated.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Let me know if there&apos;s something better I could do here.
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we should prefer CFAutorelease here instead of CFBridgingRelease. CFBridgingRelease is good when we want to turn a CF object into an autoreleased NS object, but when we just want to do a CF autorelease, CFAutorelease seems a better choice.
&gt;&gt;&gt; 
&gt;&gt;&gt; If we did that, then the static_cast would probably work, or might not be needed at all.
&gt;&gt; 
&gt;&gt; So I tried CFAutorelease. Since CFAutorelease will crash if passed null, I wrote the code as
&gt;&gt; 
&gt;&gt;     CGImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
&gt;&gt;     return dragImage ? CFAutorelease(dragImage) : nil;
&gt;&gt; 
&gt;&gt; clang didn&apos;t like that
&gt;&gt; 
&gt;&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:12: error: cannot initialize return object of type &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) with an rvalue of type &apos;CFTypeRef&apos; (aka &apos;const void *&apos;)
&gt;&gt;     return dragImage ? CFAutorelease(dragImage) : nil;
&gt;&gt;            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt; 1 error generated.
&gt;&gt; 
&gt;&gt; Next up, static_cast
&gt;&gt; 
&gt;&gt; /Volumes/Data/psolanki/sources/Safari/OpenSource/Source/WebKit/mac/WebView/WebHTMLView.mm:6573:24: error: static_cast from &apos;CFTypeRef&apos; (aka &apos;const void *&apos;) to &apos;CGImageRef&apos; (aka &apos;CGImage *&apos;) casts away qualifiers
&gt;&gt;     return dragImage ? static_cast&lt;CGImageRef&gt;(CFAutorelease(dragImage)) : nil;
&gt;&gt;                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt;&gt; 1 error generated.
&gt;&gt; 
&gt;&gt; Do I need a const_cast?
&gt;&gt; 
&gt;&gt;     return dragImage ? static_cast&lt;CGImageRef&gt;(const_cast&lt;void *&gt;(CFAutorelease(dragImage))) : nil;
&gt;&gt; 
&gt;&gt; That seems ugly...
&gt; 
&gt; OK, how about this?
&gt; 
&gt;     CFDragImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
&gt;     if (dragImage)
&gt;         CFAutorelease(dragImage);
&gt;     return dragImage;
&gt; 
&gt; I suppose this is really interim code. When bug 125241 is fixed, this should be changed to:
&gt; 
&gt;     return createDragImageForSelection(*coreFrame, forceBlackText).autorelease();
&gt; 
&gt; Or whatever name we choose for the autorelease member function.

Or we could do this:

    CGImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
    return dragImage ? (CFImageRef)CFAutorelease(dragImage) : nil;

That is still better than CFBridgingRelease, since that function is for a different purpose, and there is a difference between CFRelease and CFBridgingRelease under ARC and we may wish to convert one day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985709</commentid>
    <comment_count>8</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-28 14:11:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 225393 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225393&amp;action=review

&gt; Or we could do this:
&gt; 
&gt;     CGImageRef dragImage = createDragImageForSelection(*coreFrame, forceBlackText).leakRef();
&gt;     return dragImage ? (CFImageRef)CFAutorelease(dragImage) : nil;
&gt; 
&gt; That is still better than CFBridgingRelease, since that function is for a different purpose, and there is a difference between CFRelease and CFBridgingRelease under ARC and we may wish to convert one day.

I think I will just go with this approach. I found another place where we had the exact same issue. New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985711</commentid>
    <comment_count>9</comment_count>
      <attachid>225491</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-28 14:15:31 -0800</bug_when>
    <thetext>Created attachment 225491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985735</commentid>
    <comment_count>10</comment_count>
      <attachid>225495</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-02-28 15:15:21 -0800</bug_when>
    <thetext>Created attachment 225495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985958</commentid>
    <comment_count>11</comment_count>
      <attachid>225495</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-01 12:59:39 -0800</bug_when>
    <thetext>Comment on attachment 225495
Patch

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

&gt; Source/WebCore/bindings/objc/DOM.mm:615
&gt; +    return dragImage ? (CGImageRef)(CFAutorelease(dragImage)) : nil;

No need for these extra parentheses here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986000</commentid>
    <comment_count>12</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-03-01 15:25:42 -0800</bug_when>
    <thetext>Committed r164931: &lt;http://trac.webkit.org/changeset/164931&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225393</attachid>
            <date>2014-02-27 10:46:23 -0800</date>
            <delta_ts>2014-02-28 14:15:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129437-20140227104623.patch</filename>
            <type>text/plain</type>
            <size>1458</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjhkYTljMjk4
MzA0YTQyMmFmMjlkZWRjMDU3ODg3ODkwNzdiYTU2ZS4uMzVjMzMzMTEwYjExZTdkYjZiYTFjMTAx
MGZiMjFjOTEzZjFkOTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0
LTAyLTI3ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQgc2hvdWxkIHJldHVybiBhdXRvcmVs
ZWFzZWQgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNl
bGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDpzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1Rl
eHQ6XSk6CisKIDIwMTQtMDItMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBHZXQgcmlkIG9mIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDRjMTA2ZGM5NTNkMTlmYjVkZjhlN2Y5
MGYzMGRkNzFhNDkyNmRkNmYuLmM0ZmVjYTY5NTE1OWU4OWIyYTAxYWRhY2U4ZjlhYmQwMjgzNmZi
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNjU2OSw3
ICs2NTY5LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICAgICAgcmV0dXJuIG5pbDsK
IAogI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCpjb3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIChD
R0ltYWdlUmVmKUNGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigq
Y29yZUZyYW1lLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpKTsKICNlbHNlCiAgICAgcmV0dXJu
IFtjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQp
LmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225491</attachid>
            <date>2014-02-28 14:15:31 -0800</date>
            <delta_ts>2014-02-28 15:15:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129437-20140228141531.patch</filename>
            <type>text/plain</type>
            <size>2965</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRiZGMxNjU5OGUwMTY1
OGQ3Njc1NDI4ZDVhZWE1NDM4ODU1NjA0Zi4uNjU0YjcwOWQyYWQwZThlNTQwNmY0YzU3ZTVjMWI2
ZmFhMDJlZjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTI4ICBQcmF0
aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBzZWxlY3Rp
b25JbWFnZUZvcmNpbmdCbGFja1RleHQgc2hvdWxkIHJldHVybiBhdXRvcmVsZWFzZWQgb2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NLm1tOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2lu
Z0JsYWNrVGV4dDpyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKwogMjAxNC0wMi0y
NiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSBjb25zb2xlLnByb2ZpbGVzIGZyb20gd2luZG93LmNvbnNvbGUgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggNjhkYTljMjk4MzA0YTQyMmFmMjlkZWRjMDU3ODg3ODkwNzdi
YTU2ZS4uYjdjOTQ2ZWIxOGU0NWNiNzE5ODdiNjFlZWQ1YmYzZjBlZmY4Nzg2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTI4ICBQcmF0aWsgU29sYW5raSAgPHBz
b2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBzZWxlY3Rpb25JbWFnZUZvcmNpbmdC
bGFja1RleHQgc2hvdWxkIHJldHVybiBhdXRvcmVsZWFzZWQgb2JqZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4
dDpzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTQtMDItMjUgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIFZp
c2l0ZWRMaW5rU3RyYXRlZ3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggZGVl
YWM3NGYxOWFlZTMyMDk3YTBlYzRmOTJlY2QyMDk5NTkxYjhlNi4uZjk0MDYxOWQwMzg4OTA2YWI3
NTZmMTNhMTVkMjE4ZWEzNDQwMTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTYxMSw3ICs2MTEsOCBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVu
dFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgKnJhbmdl
LCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgZHJhZ0ltYWdlID0g
Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KS5s
ZWFrUmVmKCk7CisgICAgcmV0dXJuIGRyYWdJbWFnZSA/IChDR0ltYWdlUmVmKShDRkF1dG9yZWxl
YXNlKGRyYWdJbWFnZSkpIDogbmlsOwogI2Vsc2UKICAgICByZXR1cm4gW2NyZWF0ZURyYWdJbWFn
ZUZvclJhbmdlKCpmcmFtZSwgKnJhbmdlLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpIGF1dG9y
ZWxlYXNlXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggNGMxMDZkYzk1M2QxOWZiNWRmOGU3ZjkwZjMwZGQ3MWE0OTI2ZGQ2Zi4uMTY3ZjYyZjc2
OWIzYTY4ZDNhZDc3NmY0M2UzYzM2OWNlMmQ0Nzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC02NTY5LDcgKzY1NjksOCBAQCBzdGF0aWMgdm9pZCBleHRy
YWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZQogICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJl
dHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1Rl
eHQpLmxlYWtSZWYoKTsKKyAgICBDR0ltYWdlUmVmIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFn
ZUZvclNlbGVjdGlvbigqY29yZUZyYW1lLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpOworICAg
IHJldHVybiBkcmFnSW1hZ2UgPyAoQ0ZJbWFnZVJlZilDRkF1dG9yZWxlYXNlKGRyYWdJbWFnZSkg
OiBuaWw7CiAjZWxzZQogICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpj
b3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225495</attachid>
            <date>2014-02-28 15:15:21 -0800</date>
            <delta_ts>2014-03-01 12:59:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129437-20140228151519.patch</filename>
            <type>text/plain</type>
            <size>2965</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRiZGMxNjU5OGUwMTY1
OGQ3Njc1NDI4ZDVhZWE1NDM4ODU1NjA0Zi4uNjU0YjcwOWQyYWQwZThlNTQwNmY0YzU3ZTVjMWI2
ZmFhMDJlZjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTI4ICBQcmF0
aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBzZWxlY3Rp
b25JbWFnZUZvcmNpbmdCbGFja1RleHQgc2hvdWxkIHJldHVybiBhdXRvcmVsZWFzZWQgb2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NLm1tOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2lu
Z0JsYWNrVGV4dDpyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKwogMjAxNC0wMi0y
NiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSBjb25zb2xlLnByb2ZpbGVzIGZyb20gd2luZG93LmNvbnNvbGUgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggNjhkYTljMjk4MzA0YTQyMmFmMjlkZWRjMDU3ODg3ODkwNzdi
YTU2ZS4uYjdjOTQ2ZWIxOGU0NWNiNzE5ODdiNjFlZWQ1YmYzZjBlZmY4Nzg2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTI4ICBQcmF0aWsgU29sYW5raSAgPHBz
b2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBzZWxlY3Rpb25JbWFnZUZvcmNpbmdC
bGFja1RleHQgc2hvdWxkIHJldHVybiBhdXRvcmVsZWFzZWQgb2JqZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4
dDpzZWxlY3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTQtMDItMjUgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIFZp
c2l0ZWRMaW5rU3RyYXRlZ3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggZGVl
YWM3NGYxOWFlZTMyMDk3YTBlYzRmOTJlY2QyMDk5NTkxYjhlNi4uZjk0MDYxOWQwMzg4OTA2YWI3
NTZmMTNhMTVkMjE4ZWEzNDQwMTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTYxMSw3ICs2MTEsOCBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVu
dFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgKnJhbmdl
LCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgZHJhZ0ltYWdlID0g
Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KS5s
ZWFrUmVmKCk7CisgICAgcmV0dXJuIGRyYWdJbWFnZSA/IChDR0ltYWdlUmVmKShDRkF1dG9yZWxl
YXNlKGRyYWdJbWFnZSkpIDogbmlsOwogI2Vsc2UKICAgICByZXR1cm4gW2NyZWF0ZURyYWdJbWFn
ZUZvclJhbmdlKCpmcmFtZSwgKnJhbmdlLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpIGF1dG9y
ZWxlYXNlXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggNGMxMDZkYzk1M2QxOWZiNWRmOGU3ZjkwZjMwZGQ3MWE0OTI2ZGQ2Zi4uYjdhYWMzMmMz
ZjRmNzgzODgzNmRmNmY3NTQ3YTU0MzAyMzQ2YjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC02NTY5LDcgKzY1NjksOCBAQCBzdGF0aWMgdm9pZCBleHRy
YWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZQogICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHJl
dHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1Rl
eHQpLmxlYWtSZWYoKTsKKyAgICBDR0ltYWdlUmVmIGRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFn
ZUZvclNlbGVjdGlvbigqY29yZUZyYW1lLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpOworICAg
IHJldHVybiBkcmFnSW1hZ2UgPyAoQ0dJbWFnZVJlZilDRkF1dG9yZWxlYXNlKGRyYWdJbWFnZSkg
OiBuaWw7CiAjZWxzZQogICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpj
b3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogI2VuZGlm
Cg==
</data>
<flag name="review"
          id="249641"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>