<?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>87756</bug_id>
          
          <creation_ts>2012-05-29 10:14:52 -0700</creation_ts>
          <short_desc>[GTK] [WK2] Memory leak in webkitWebViewBaseStartDrag</short_desc>
          <delta_ts>2012-05-30 23:52:57 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sudarsana Nagineni (babu)">naginenis</reporter>
          <assigned_to name="Sudarsana Nagineni (babu)">naginenis</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>636172</commentid>
    <comment_count>0</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-29 10:14:52 -0700</bug_when>
    <thetext>Valgrind reports the following memory leak in webkitWebViewBaseStartDrag. I think this can be fixed by adopting an allocation of DataObjectGtk.

==29268== 838 (152 direct, 686 indirect) bytes in 1 blocks are definitely lost in loss record 7,146 of 7,746
==29268==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29268==    by 0xC1B362E: WTF::fastMalloc(unsigned long) (FastMalloc.cpp:268)
==29268==    by 0x60BC6EF: WTF::RefCounted&lt;WebCore::DataObjectGtk&gt;::operator new(unsigned long) (RefCounted.h:185)
==29268==    by 0x60BC422: WebCore::DataObjectGtk::create() (DataObjectGtk.h:36)
==29268==    by 0x60BB86E: CoreIPC::decodeDataObject(CoreIPC::ArgumentDecoder*, WTF::RefPtr&lt;WebCore::DataObjectGtk&gt;&amp;) (ArgumentCodersGtk.cpp:118)
==29268==    by 0x60BBE43: CoreIPC::ArgumentCoder&lt;WebCore::DragData&gt;::decode(CoreIPC::ArgumentDecoder*, WebCore::DragData&amp;) (ArgumentCodersGtk.cpp:212)
==29268==    by 0x62DE17A: bool CoreIPC::ArgumentDecoder::decode&lt;WebCore::DragData&gt;(WebCore::DragData&amp;) (ArgumentDecoder.h:90)
==29268==    by 0x62DDCAF: CoreIPC::Arguments1&lt;WebCore::DragData&gt;::decode(CoreIPC::ArgumentDecoder*, CoreIPC::Arguments1&lt;WebCore::DragData&gt;&amp;) (Arguments.h:77)
==29268==    by 0x62DD271: CoreIPC::Arguments2&lt;WebCore::DragData, WebKit::ShareableBitmap::Handle&gt;::decode(CoreIPC::ArgumentDecoder*, CoreIPC::Arguments2&lt;WebCore::DragData, WebKit::ShareableBitmap::Handle&gt;
==29268==    by 0x62DC276: CoreIPC::ArgumentCoder&lt;CoreIPC::Arguments2&lt;WebCore::DragData, WebKit::ShareableBitmap::Handle&gt; &gt;::decode(CoreIPC::ArgumentDecoder*, CoreIPC::Arguments2&lt;WebCore::DragData, WebKit:
==29268==    by 0x62DA976: bool CoreIPC::ArgumentDecoder::decode&lt;CoreIPC::Arguments2&lt;WebCore::DragData, WebKit::ShareableBitmap::Handle&gt; &gt;(CoreIPC::Arguments2&lt;WebCore::DragData, WebKit::ShareableBitmap::Ha
==29268==    by 0x62D72F9: void CoreIPC::handleMessage&lt;Messages::WebPageProxy::StartDrag, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebCore::DragData const&amp;, WebKit::ShareableBitmap::Handle cons
==29268==    by 0x62D3997: WebKit::WebPageProxy::didReceiveWebPageProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) (WebPageProxyMessageReceiver.cpp:449)
==29268==    by 0x61A4B22: WebKit::WebPageProxy::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) (WebPageProxy.cpp:1744)
==29268==    by 0x61D9391: WebKit::WebProcessProxy::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) (WebProcessProxy.cpp:333)
==29268==    by 0x616EBC2: WebKit::WebConnectionToWebProcess::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) (WebConnectionToWebProcess.cpp:92)
==29268==    by 0x6090D3A: CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message&lt;CoreIPC::ArgumentDecoder&gt;&amp;) (Connection.cpp:691)
==29268==    by 0x6090ED8: CoreIPC::Connection::dispatchOneMessage() (Connection.cpp:717)
==29268==    by 0x609B075: WTF::FunctionWrapper&lt;void (CoreIPC::Connection::*)()&gt;::operator()(CoreIPC::Connection*) (Functional.h:173)
==29268==    by 0x609AE7B: WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (CoreIPC::Connection::*)()&gt;, void ()(CoreIPC::Connection*)&gt;::operator()() (Functional.h:405)
==29268==    by 0x609FEBD: WTF::Function&lt;void ()()&gt;::operator()() const (Functional.h:613)
==29268==    by 0x6B86D50: WebCore::RunLoop::performWork() (RunLoop.cpp:67)
==29268==    by 0x7589241: WebCore::RunLoop::queueWork(WebCore::RunLoop*) (RunLoopGtk.cpp:102)
==29268==    by 0xB204C99: g_main_context_dispatch (gmain.c:2515)
==29268==    by 0xB20505F: g_main_context_iterate.isra.23 (gmain.c:3123)
==29268==    by 0xB205459: g_main_loop_run (gmain.c:3317)
==29268==    by 0xA71125C: gtk_main (gtkmain.c:1165)
==29268==    by 0x40B136: main (main.c:233)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636176</commentid>
    <comment_count>1</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-29 10:17:31 -0700</bug_when>
    <thetext>I will provide a fix for this leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636999</commentid>
    <comment_count>2</comment_count>
      <attachid>144744</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-30 01:11:44 -0700</bug_when>
    <thetext>Created attachment 144744
Patch

Fix a memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637003</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 01:14:45 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637033</commentid>
    <comment_count>4</comment_count>
      <attachid>144744</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-30 02:01:06 -0700</bug_when>
    <thetext>Comment on attachment 144744
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:678
&gt; -    RefPtr&lt;DataObjectGtk&gt; dataObject(dragData.platformData());
&gt; +    RefPtr&lt;DataObjectGtk&gt; dataObject = adoptRef(dragData.platformData());

hmm, it&apos;s a bit weird, because that leaves DragData object with an invalid pointer when webkitWebViewBaseStartDrag finishes. It&apos;s not a problem because I think DragData is deleted after this and platformData() is not used anymore. The problem is that DradData is supposed to contain a const reference of platformData, so it&apos;s not clear in this case who should release the platform data.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:679
&gt;      GRefPtr&lt;GtkTargetList&gt; targetList(PasteboardHelper::defaultPasteboardHelper()-&gt;targetListForDataObject(dataObject.get()));

I think this is a leak too, targetListForDataObject() returns a new GtkTargetList and gtk_drag_begin takes a reference, so we should adopt it here, so that the only reference left when webkitWebViewBaseStartDrag finishes is owned by gtk. This happens in WebKit1 code too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637328</commentid>
    <comment_count>5</comment_count>
      <attachid>144744</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-30 09:52:50 -0700</bug_when>
    <thetext>Comment on attachment 144744
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:678
&gt;&gt; +    RefPtr&lt;DataObjectGtk&gt; dataObject = adoptRef(dragData.platformData());
&gt; 
&gt; hmm, it&apos;s a bit weird, because that leaves DragData object with an invalid pointer when webkitWebViewBaseStartDrag finishes. It&apos;s not a problem because I think DragData is deleted after this and platformData() is not used anymore. The problem is that DradData is supposed to contain a const reference of platformData, so it&apos;s not clear in this case who should release the platform data.

The reason for this leak is that DragData does not delete its platformData. So, we need to take care of it and that&apos;s the reason I&apos;m adopting it so that it will be dereferenced and released when GtkDragAndDropHelper::handleDragEnd() is called.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:679
&gt;&gt;      GRefPtr&lt;GtkTargetList&gt; targetList(PasteboardHelper::defaultPasteboardHelper()-&gt;targetListForDataObject(dataObject.get()));
&gt; 
&gt; I think this is a leak too, targetListForDataObject() returns a new GtkTargetList and gtk_drag_begin takes a reference, so we should adopt it here, so that the only reference left when webkitWebViewBaseStartDrag finishes is owned by gtk. This happens in WebKit1 code too.

I also thought about it, but for some reason valgrind doesn&apos;t report anything related to this. Anyway, it makes sense to adopt it, so I will update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637382</commentid>
    <comment_count>6</comment_count>
      <attachid>144858</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-30 10:22:18 -0700</bug_when>
    <thetext>Created attachment 144858
Patch

Fixed another possible leak by adopting targetList received from targetListForDataObject().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638025</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-30 23:31:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 144744 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144744&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:678
&gt; &gt;&gt; +    RefPtr&lt;DataObjectGtk&gt; dataObject = adoptRef(dragData.platformData());
&gt; &gt; 
&gt; &gt; hmm, it&apos;s a bit weird, because that leaves DragData object with an invalid pointer when webkitWebViewBaseStartDrag finishes. It&apos;s not a problem because I think DragData is deleted after this and platformData() is not used anymore. The problem is that DradData is supposed to contain a const reference of platformData, so it&apos;s not clear in this case who should release the platform data.
&gt; 
&gt; The reason for this leak is that DragData does not delete its platformData.

Exactly, because it holds a const reference, so the platform data is supposed to be released when DragData is already freed. Otherwise, DragData will have a pointer to freed memory.

&gt; So, we need to take care of it and that&apos;s the reason I&apos;m adopting it so that it will be dereferenced and released when GtkDragAndDropHelper::handleDragEnd() is called.

Ok, I see now, the data object is not released when webkitWebViewBaseStartDrag finished because GtkDragAndDropHelper takes a reference to it, so adopting it here makes the GtkDragAndDropHelper to adopt it, which is correct and expected.

&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:679
&gt; &gt;&gt;      GRefPtr&lt;GtkTargetList&gt; targetList(PasteboardHelper::defaultPasteboardHelper()-&gt;targetListForDataObject(dataObject.get()));
&gt; &gt; 
&gt; &gt; I think this is a leak too, targetListForDataObject() returns a new GtkTargetList and gtk_drag_begin takes a reference, so we should adopt it here, so that the only reference left when webkitWebViewBaseStartDrag finishes is owned by gtk. This happens in WebKit1 code too.
&gt; 
&gt; I also thought about it, but for some reason valgrind doesn&apos;t report anything related to this. Anyway, it makes sense to adopt it, so I will update the patch.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638033</commentid>
    <comment_count>8</comment_count>
      <attachid>144858</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 23:46:31 -0700</bug_when>
    <thetext>Comment on attachment 144858
Patch

Clearing flags on attachment: 144858

Committed r119063: &lt;http://trac.webkit.org/changeset/119063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638034</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 23:46:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638039</commentid>
    <comment_count>10</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-05-30 23:52:57 -0700</bug_when>
    <thetext>Thanks for your review Carlos!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144744</attachid>
            <date>2012-05-30 01:11:44 -0700</date>
            <delta_ts>2012-05-30 10:22:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>87756.patch</filename>
            <type>text/plain</type>
            <size>1588</size>
            <attacher name="Sudarsana Nagineni (babu)">naginenis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4NzNhNzllLi40MDNhNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMDUtMzAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBs
aW51eC5pbnRlbC5jb20+CisKKyAgICAgICAgW0dUS10gW1dLMl0gTWVtb3J5IGxlYWsgaW4gd2Vi
a2l0V2ViVmlld0Jhc2VTdGFydERyYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRml4IGEgbWVtb3J5IGxlYWsgaW4gd2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcgYnkgdXNpbmcgYWRvcHRSZWYgaW5zdGVhZAorICAgICAgICBvZiBqdXN0IGdldHRpbmcg
YSBuZXcgcmVmZXJlbmNlIG9mIGRhdGFPYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0
YXJ0RHJhZyk6CisKIDIwMTItMDUtMjkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgTm90aWNlYWJsZSBkZWxheSB0YWtpbmcgYW4gSFRNTDUgdHJhaWxlciBmdWxs
c2NyZWVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDRmYWE3NWYuLjQwYjg1ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
QEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgRHJhZ0RhdGEmCiB7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAKLSAgICBSZWZQ
dHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Cisg
ICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QgPSBhZG9wdFJlZihkcmFnRGF0YS5w
bGF0Zm9ybURhdGEoKSk7CiAgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0YXJnZXRMaXN0KFBh
c3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3RGb3JE
YXRhT2JqZWN0KGRhdGFPYmplY3QuZ2V0KCkpKTsKICAgICBHT3duUHRyPEdka0V2ZW50PiBjdXJy
ZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkpOwogICAgIEdka0RyYWdDb250ZXh0KiBj
b250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144858</attachid>
            <date>2012-05-30 10:22:18 -0700</date>
            <delta_ts>2012-05-30 23:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>87756.patch</filename>
            <type>text/plain</type>
            <size>3571</size>
            <attacher name="Sudarsana Nagineni (babu)">naginenis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCA3ZWNmNGQwLi5lNDlmZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDUtMzAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CisKKyAgICAgICAgW0dUS10gW1dLMl0gTWVtb3J5
IGxlYWsgaW4gd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBkcmFnIGFu
ZCBkcm9wIGJ5IHVzaW5nIGFkb3B0UmVmIGluc3RlYWQKKyAgICAgICAgb2YganVzdCBnZXR0aW5n
IGEgbmV3IHJlZmVyZW5jZSBvZiB0YXJnZXRMaXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0
RHJhZyk6CisKIDIwMTItMDUtMjUgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxl
bmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8g
c3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmNwcAppbmRleCBiYzg3NDdkLi45MjgwMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lk
IERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBkcmFnSW1hZ2VPcmlnaW4sCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0
X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7CiAgICAgUmVmUHRyPERhdGFPYmpl
Y3RHdGs+IGRhdGFPYmplY3QgPSBjbGlwYm9hcmRHdGstPmRhdGFPYmplY3QoKTsKLSAgICBHUmVm
UHRyPEd0a1RhcmdldExpc3Q+IHRhcmdldExpc3QoUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBh
c3RlYm9hcmRIZWxwZXIoKS0+dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoZGF0YU9iamVjdC5nZXQo
KSkpOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IGFkb3B0R1JlZihQ
YXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0Rm9y
RGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7CiAgICAgR093blB0cjxHZGtFdmVudD4gY3Vy
cmVudEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKIAogICAgIEdka0RyYWdDb250ZXh0
KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dlYlZpZXcpLCB0YXJnZXRM
aXN0LmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhjbGlwYm9hcmQtPnNvdXJj
ZU9wZXJhdGlvbigpKSwgMSwgY3VycmVudEV2ZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NzNh
NzllLi4yNjAzMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUtMzAgIFN1
ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CisK
KyAgICAgICAgW0dUS10gW1dLMl0gTWVtb3J5IGxlYWsgaW4gd2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZWQgbWVtb3J5IGxlYWtzIGluIGRyYWcgYW5kIGRyb3AgYnkgdXNpbmcgYWRvcHRSZWYgaW5zdGVh
ZAorICAgICAgICBvZiBqdXN0IGdldHRpbmcgbmV3IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVN0YXJ0RHJhZyk6CisKIDIwMTItMDUtMjkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWNlYWJsZSBkZWxheSB0YWtpbmcgYW4gSFRNTDUg
dHJhaWxlciBmdWxsc2NyZWVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDRmYWE3NWYuLmY4MzA4YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAKQEAgLTY3NSw4ICs2NzUsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3Rh
cnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgRHJhZ0RhdGEmCiB7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7
CiAKLSAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdChkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7Ci0gICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0YXJnZXRMaXN0KFBhc3RlYm9h
cmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3RGb3JEYXRhT2Jq
ZWN0KGRhdGFPYmplY3QuZ2V0KCkpKTsKKyAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9i
amVjdCA9IGFkb3B0UmVmKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICBHUmVmUHRyPEd0
a1RhcmdldExpc3Q+IHRhcmdldExpc3QgPSBhZG9wdEdSZWYoUGFzdGVib2FyZEhlbHBlcjo6ZGVm
YXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoZGF0YU9iamVj
dC5nZXQoKSkpOwogICAgIEdPd25QdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1
cnJlbnRfZXZlbnQoKSk7CiAgICAgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQgPSBndGtfZHJhZ19i
ZWdpbihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldExpc3QuZ2V0KCksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>