<?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>21837</bug_id>
          
          <creation_ts>2008-10-23 13:22:13 -0700</creation_ts>
          <short_desc>critical error in Gtk FrameLoaderClient::frameLoaderDestroyed()</short_desc>
          <delta_ts>2009-01-03 12:08:16 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>22491</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathon Jongsma (jonner)">jonathon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>96384</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathon Jongsma (jonner)">jonathon</who>
    <bug_when>2008-10-23 13:22:13 -0700</bug_when>
    <thetext>We&apos;re unreffing the m_frame object but never taking a ref on it.  Backtrace for the critical warning is as follows:

#0  0xb7f797f2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0xb5731085 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xb5732a01 in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0xb58970ea in IA__g_logv (log_domain=0xb59414cb &quot;GLib-GObject&quot;, 
    log_level=G_LOG_LEVEL_CRITICAL, 
    format=0xb58cc8e8 &quot;%s: assertion `%s&apos; failed&quot;, 
    args1=0xbfa60adc &quot;*-\224µP \224µ@¼ø·l÷\t\b0s\211µx¦\224µ\230£!\b(\v¦¿\032¸\221µË\024\224µ&amp;-\224µP \224µ&quot;)
    at /build/buildd/glib2.0-2.16.6/glib/gmessages.c:497
#4  0xb5897129 in IA__g_log (log_domain=0xb59414cb &quot;GLib-GObject&quot;, 
    log_level=G_LOG_LEVEL_CRITICAL, 
    format=0xb58cc8e8 &quot;%s: assertion `%s&apos; failed&quot;)
    at /build/buildd/glib2.0-2.16.6/glib/gmessages.c:517
#5  0xb589738b in IA__g_return_if_fail_warning (
    log_domain=0xb59414cb &quot;GLib-GObject&quot;, 
    pretty_function=0xb5942d2a &quot;g_object_unref&quot;, 
    expression=0xb5942050 &quot;object-&gt;ref_count &gt; 0&quot;)
    at /build/buildd/glib2.0-2.16.6/glib/gmessages.c:532
#6  0xb591b81a in IA__g_object_unref (_object=0x809f768)
    at /build/buildd/glib2.0-2.16.6/gobject/gobject.c:1742
#7  0xb63caf25 in WebKit::FrameLoaderClient::frameLoaderDestroyed (
    this=0x821a398) at WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:235
#8  0xb68dd4c8 in ~FrameLoader (this=0x821a724)
    at WebCore/loader/FrameLoader.cpp:282
#9  0xb699bbc0 in ~FramePrivate (this=0x821a700) at WebCore/page/Frame.cpp:1819
#10 0xb699c7a2 in ~Frame (this=0x821a420) at WebCore/page/Frame.cpp:176
#11 0xb63d343c in webkit_web_frame_finalize (object=0x809f768)
    at ./JavaScriptCore/wtf/RefCounted.h:96
#12 0xb591b8cb in IA__g_object_unref (_object=0x809f768)
    at /build/buildd/glib2.0-2.16.6/gobject/gobject.c:1793
#13 0xb63e0ec1 in webkit_web_view_finalize (object=0x808b150)
    at WebKit/gtk/webkit/webkitwebview.cpp:781
#14 0xb591b8cb in IA__g_object_unref (_object=0x808b150)
    at /build/buildd/glib2.0-2.16.6/gobject/gobject.c:1793
#15 0xb5c5231e in IA__gtk_object_destroy (object=0x808b150)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkobject.c:403
#16 0xb5b4e21f in gtk_bin_forall (container=0x806d710, include_internals=0, 
    callback=0x6, callback_data=0x0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkbin.c:133
#17 0xb5c8e7b1 in gtk_scrolled_window_forall (container=0x806d710, 
    include_internals=0, callback=0xb5d58980 &lt;IA__gtk_widget_destroy&gt;, 
    callback_data=0x0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkscrolledwindow.c:1021
#18 0xb5b938a7 in IA__gtk_container_foreach (container=0x806d710, 
    callback=0xb5d58980 &lt;IA__gtk_widget_destroy&gt;, callback_data=0x0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkcontainer.c:1480
#19 0xb5b941d0 in gtk_container_destroy (object=0x806d710)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkcontainer.c:1020
#20 0xb5c91208 in gtk_scrolled_window_destroy (object=0x806d710)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkscrolledwindow.c:799
#21 0xb5926aef in IA__g_cclosure_marshal_VOID__VOID (closure=0x80713a8, 
    return_value=0x0, n_param_values=1, param_values=0xbfa61164, 
    invocation_hint=0xbfa6106c, marshal_data=0xb5c91160)
    at /build/buildd/glib2.0-2.16.6/gobject/gmarshal.c:77
#22 0xb5918069 in g_type_class_meta_marshal (closure=0x80713a8, 
    return_value=0x0, n_param_values=1, param_values=0xbfa61164, 
    invocation_hint=0xbfa6106c, marshal_data=0x4c)
    at /build/buildd/glib2.0-2.16.6/gobject/gclosure.c:567
#23 0xb591981f in IA__g_closure_invoke (closure=0x80713a8, return_value=0x0, 
    n_param_values=1, param_values=0xbfa61164, invocation_hint=0xbfa6106c)
    at /build/buildd/glib2.0-2.16.6/gobject/gclosure.c:490
#24 0xb592e4c5 in signal_emit_unlocked_R (node=0x80713f0, detail=0, 
    instance=0x806d710, emission_return=0x0, instance_and_params=0xbfa61164)
    at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2556
#25 0xb592fc0f in IA__g_signal_emit_valist (instance=0x5908, signal_id=7, 
    detail=0, 
    var_args=0xbfa6139c &quot;\234\215åµ\234\215åµ\020×\006\bÈ\023¦¿!\207Õµ\020×\006\b\020×\006\b&quot;) at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2199
#26 0xb592ff59 in IA__g_signal_emit (instance=0x806d710, signal_id=7, detail=0)
    at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2243
#27 0xb5c52611 in gtk_object_dispose (gobject=0x806d710)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkobject.c:418
#28 0xb5d58721 in gtk_widget_dispose (object=0x806d710)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwidget.c:7854
#29 0xb591bd60 in IA__g_object_run_dispose (object=0x806d710)
    at /build/buildd/glib2.0-2.16.6/gobject/gobject.c:573
#30 0xb5c5231e in IA__gtk_object_destroy (object=0x806d710)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkobject.c:403
#31 0xb5b4e21f in gtk_bin_forall (container=0x808d378, include_internals=0, 
    callback=0x6, callback_data=0x0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkbin.c:133
#32 0xb5b938a7 in IA__gtk_container_foreach (container=0x808d378, 
    callback=0xb5d58980 &lt;IA__gtk_widget_destroy&gt;, callback_data=0x0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkcontainer.c:1480
#33 0xb5b941d0 in gtk_container_destroy (object=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkcontainer.c:1020
#34 0xb5d68c11 in gtk_window_destroy (object=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwindow.c:4190
#35 0xb5926aef in IA__g_cclosure_marshal_VOID__VOID (closure=0x80713a8, 
    return_value=0x0, n_param_values=1, param_values=0xbfa617c4, 
    invocation_hint=0xbfa616cc, marshal_data=0xb5d68b90)
    at /build/buildd/glib2.0-2.16.6/gobject/gmarshal.c:77
#36 0xb5918069 in g_type_class_meta_marshal (closure=0x80713a8, 
    return_value=0x0, n_param_values=1, param_values=0xbfa617c4, 
    invocation_hint=0xbfa616cc, marshal_data=0x4c)
    at /build/buildd/glib2.0-2.16.6/gobject/gclosure.c:567
#37 0xb5919749 in IA__g_closure_invoke (closure=0x80713a8, return_value=0x0, 
    n_param_values=1, param_values=0xbfa617c4, invocation_hint=0xbfa616cc)
    at /build/buildd/glib2.0-2.16.6/gobject/gclosure.c:490
#38 0xb592e4c5 in signal_emit_unlocked_R (node=0x80713f0, detail=0, 
    instance=0x808d378, emission_return=0x0, instance_and_params=0xbfa617c4)
    at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2556
#39 0xb592fc0f in IA__g_signal_emit_valist (instance=0x5908, signal_id=7, 
    detail=0, var_args=0xbfa619fc &quot;º|Õµ\234\215åµxÓ\b\b(\032¦¿!\207ÕµxÓ\b\b&quot;)
    at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2199
#40 0xb592ff59 in IA__g_signal_emit (instance=0x808d378, signal_id=7, detail=0)
    at /build/buildd/glib2.0-2.16.6/gobject/gsignal.c:2243
#41 0xb5c52611 in gtk_object_dispose (gobject=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkobject.c:418
#42 0xb5d58721 in gtk_widget_dispose (object=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwidget.c:7854
#43 0xb5d658b6 in gtk_window_dispose (object=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkwindow.c:1969
#44 0xb591bd60 in IA__g_object_run_dispose (object=0x808d378)
    at /build/buildd/glib2.0-2.16.6/gobject/gobject.c:573
#45 0xb5c5231e in IA__gtk_object_destroy (object=0x808d378)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkobject.c:403
#46 0xb5c2bfc7 in IA__gtk_main_do_event (event=0x809a2f0)
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmain.c:1492
#47 0xb5aa3a9a in gdk_event_dispatch (source=0x806fd58, callback=0, 
    user_data=0x0) at /build/buildd/gtk+2.0-2.12.9/gdk/x11/gdkevents-x11.c:2351
#48 0xb588dcc6 in IA__g_main_context_dispatch (context=0x806fda0)
    at /build/buildd/glib2.0-2.16.6/glib/gmain.c:2012
#49 0xb5891083 in g_main_context_iterate (context=0x806fda0, block=1, 
    dispatch=1, self=0x807d838)
    at /build/buildd/glib2.0-2.16.6/glib/gmain.c:2645
#50 0xb5891467 in IA__g_main_loop_run (loop=0x8212e10)
    at /build/buildd/glib2.0-2.16.6/glib/gmain.c:2853
#51 0xb5c2c264 in IA__gtk_main ()
    at /build/buildd/gtk+2.0-2.12.9/gtk/gtkmain.c:1163
#52 0x08049cfd in main (argc=Cannot access memory at address 0x6
) at WebKitTools/GtkLauncher/main.c:227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96413</commentid>
    <comment_count>1</comment_count>
      <attachid>24617</attachid>
    <who name="Jonathon Jongsma (jonner)">jonathon</who>
    <bug_when>2008-10-23 14:06:32 -0700</bug_when>
    <thetext>Created attachment 24617
add a ref in the constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96423</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathon Jongsma (jonner)">jonathon</who>
    <bug_when>2008-10-23 14:49:44 -0700</bug_when>
    <thetext>Actually, this is really a case that&apos;s screaming out for a GRefPtr so we don&apos;t need to do all of this manual ref-counting...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96481</commentid>
    <comment_count>3</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-23 21:37:06 -0700</bug_when>
    <thetext>Confirmed. This started happening after r37676 from bug #20403

We need to make sure this patch doesn&apos;t introduce leaks before landing it (need to check for circular references of WebKitWebFrames).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96505</commentid>
    <comment_count>4</comment_count>
      <attachid>24617</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-24 07:11:07 -0700</bug_when>
    <thetext>Comment on attachment 24617
add a ref in the constructor

Yeah, the fix is a bit more involved. I have a patch working, will post soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96648</commentid>
    <comment_count>5</comment_count>
      <attachid>24671</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-24 23:48:28 -0700</bug_when>
    <thetext>Created attachment 24671
Fix leaks

Turns that _all_ WebKitWebFrames and all WebCore::Frame&apos;s are being leaked, including other resources they keep alive.

This is a WIP patch that fixes all the Frame leaks. Full of debug comments and eeds testing, haven&apos;t tried DRT yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99929</commentid>
    <comment_count>6</comment_count>
      <attachid>25422</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-11-24 03:06:02 -0800</bug_when>
    <thetext>Created attachment 25422
updated and cleaned up Alp&apos;s patch 

Updated alp&apos;s patch which fixes the frame leaks. We are still leaking CachedResources and WebCoreNodes (according to the debug-build stdout) but that will probably go to a separate patch. No crashes in DRT. No regression was added to what&apos;s already enabled in Gtk DRT.

This probably needs some work. But I would like to get feedback so I know what still needs to be done. 

Cheers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100256</commentid>
    <comment_count>7</comment_count>
      <attachid>25494</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-25 12:09:54 -0800</bug_when>
    <thetext>Created attachment 25494
Add unit test for this bug

Add a unit test for this bug, also attempt to test that we are destructing the webframe. Instead of taking a real reference on the webkitwebframe we might need to take a weak ref but the api is not too nice...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100257</commentid>
    <comment_count>8</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-25 12:10:52 -0800</bug_when>
    <thetext>Add the dependency on the unit test bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100260</commentid>
    <comment_count>9</comment_count>
      <attachid>25422</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-25 12:29:23 -0800</bug_when>
    <thetext>Comment on attachment 25422
updated and cleaned up Alp&apos;s patch 

&gt; diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
&gt; index 8d05ebc..50c8605 100644
&gt; --- a/WebKit/gtk/ChangeLog
&gt; +++ b/WebKit/gtk/ChangeLog
&gt; @@ -1,3 +1,21 @@
&gt; +2008-11-24  Jan Michael Alonzo  &lt;jmalonzo@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Original patch by Alp Toker. Updated by Jan Alonzo.
&gt; +
&gt; +        critical error in Gtk FrameLoaderClient::frameLoaderDestroyed()
&gt; +        http://bugs.webkit.org/show_bug.cgi?id=21837


^^^ be a bit more verbose?

IIRC:
   WebCore::Frame and WebCore::FrameLoaderClient have the same lifetime. Initially we wanted to have WebKitWebFrame have the same lifetime as well otherwise you have to add plenty of NULL checks to WebKitWebFrame... Think of someone doing a g_object_ref on the WebKitWebFrame but the page the user navigated to was left, the WebCore::Frame destroyed....if WebCore::Frame is destroyed before the WebKitWebFrame we will have to add null checks to WebKitWebFrame. So what we have instead is something like a circular dependency and fail to break the circle. (or alternatively the lifetime of WebKitWebFrame should determine the ifetime of WebCore::Frame).



&gt;  bool FrameLoaderClient::hasWebView() const
&gt;  {
&gt; -    notImplemented();
&gt; -    return true;
&gt; +    return getViewFromFrame(m_frame) != NULL;

No NULL in C++ code, this should never be false?




&gt; diff --git a/WebKit/gtk/webkit/webkitwebframe.cpp b/WebKit/gtk/webkit/webkitwebframe.cpp
&gt; index 6a4c4d5..3d8548f 100644
&gt; --- a/WebKit/gtk/webkit/webkitwebframe.cpp
&gt; +++ b/WebKit/gtk/webkit/webkitwebframe.cpp
&gt; @@ -97,9 +97,11 @@ static void webkit_web_frame_finalize(GObject* object)
&gt;      WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object);
&gt;      WebKitWebFramePrivate* priv = frame-&gt;priv;
&gt;  
&gt; -    priv-&gt;coreFrame-&gt;loader()-&gt;cancelAndClear();

FrameLoader is already gone?

&gt;      priv-&gt;coreFrame = 0;
&gt;  
&gt; +    // priv-&gt;client will be deleted when the WebCore::Frame is actually
&gt; +    // deleted, which may happen slightly later than WebFrame finalization.
&gt; +

this is where the fun starts... A g_object_ref(frame) will keep the WebCore::Frame
alive as well?


&gt;      g_free(priv-&gt;name);
&gt;      g_free(priv-&gt;title);
&gt;      g_free(priv-&gt;uri);
&gt; @@ -239,7 +241,7 @@ WebKitWebFrame* webkit_web_frame_init_with_web_view(WebKitWebView* webView, HTML
&gt;  
&gt;      priv-&gt;webView = webView;
&gt;      priv-&gt;client = new WebKit::FrameLoaderClient(frame);
&gt; -    priv-&gt;coreFrame = Frame::create(viewPriv-&gt;corePage, element, priv-&gt;client).releaseRef();
&gt; +    priv-&gt;coreFrame = Frame::create(viewPriv-&gt;corePage, element, priv-&gt;client);


okay, we start with refcount one and the above should be case?


&gt;  
&gt; -    webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object));
&gt; +    if (Frame* mainFrame = priv-&gt;corePage-&gt;mainFrame())
&gt; +        mainFrame-&gt;loader()-&gt;detachFromParent();

hmm... 




&gt; +//    priv-&gt;children = 0;

NO!


&gt; -    g_object_unref(priv-&gt;backForwardList);
&gt; -    g_signal_handlers_disconnect_by_func(priv-&gt;webSettings, (gpointer)webkit_web_view_settings_notify, webView);
&gt; +    g_signal_handlers_disconnect_by_func(priv-&gt;webSettings,
&gt; +                                         (gpointer)webkit_web_view_settings_notify, webView);
&gt;      g_object_unref(priv-&gt;webSettings);
&gt; +    g_object_unref(priv-&gt;backForwardList);

unrelated changes? separate patch then?


&gt;      g_object_unref(priv-&gt;webInspector);
&gt; -    g_object_unref(priv-&gt;mainFrame);

I have to check this when I&apos;m awake. But we should write something regarding the lifetime and ownership of the various components.


&gt;      g_object_unref(priv-&gt;imContext);
&gt;      gtk_target_list_unref(priv-&gt;copy_target_list);
&gt;      gtk_target_list_unref(priv-&gt;paste_target_list);
&gt; @@ -1513,7 +1516,11 @@ static void webkit_web_view_init(WebKitWebView* webView)
&gt;  #endif
&gt;  
&gt;      GTK_WIDGET_SET_FLAGS(webView, GTK_CAN_FOCUS);
&gt; -    priv-&gt;mainFrame = WEBKIT_WEB_FRAME(webkit_web_frame_new(webView));
&gt; +
&gt; +    // This unintuitively creates a new WebFrame and sets it as the main frame
&gt; +    // of the WebView when the owner element argument is 0.
&gt; +    webkit_web_frame_init_with_web_view(webView, 0);
&gt; +
&gt;      priv-&gt;lastPopupXPosition = priv-&gt;lastPopupYPosition = -1;
&gt;      priv-&gt;editable = false;
&gt;  
&gt; @@ -1878,8 +1885,7 @@ WebKitWebFrame* webkit_web_view_get_main_frame(WebKitWebView* webView)
&gt;  {
&gt;      g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
&gt;  
&gt; -    WebKitWebViewPrivate* priv = webView-&gt;priv;
&gt; -    return priv-&gt;mainFrame;
&gt; +    return kit(core(webView)-&gt;mainFrame());


this can only make sense if someone is calling get_main_frame from within the _finalize of the WebKitWebView? Do we want to support that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101176</commentid>
    <comment_count>10</comment_count>
      <attachid>25494</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-03 03:45:28 -0800</bug_when>
    <thetext>Comment on attachment 25494
Add unit test for this bug

&gt; +static void test_webkit_web_frame_lifetime(void)
&gt; +{
&gt; +    WebKitWebView* webView;
&gt; +    WebKitWebFrame* webFrame;
&gt; +    g_test_bug(&quot;21837&quot;);
&gt; +
&gt; +    webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
&gt; +    g_object_ref_sink(webView);
&gt; +    g_assert_cmpint(G_OBJECT(webView)-&gt;ref_count, ==, 1);
&gt; +    webFrame = webkit_web_view_get_main_frame(webView);
&gt; +    g_assert_cmpint(G_OBJECT(webFrame)-&gt;ref_count, ==, 1);
&gt; +
&gt; +    // Add dummy reference on the WebKitWebFrame to keep it alive
&gt; +    g_object_ref(webFrame);
&gt; +    g_assert_cmpint(G_OBJECT(webFrame)-&gt;ref_count, ==, 2);
&gt; +
&gt; +    // This crashed with the original version
&gt; +    g_object_unref(webView);
&gt; +
&gt; +    // Make sure that the frame got deleted as well. We did this
&gt; +    // by adding an extra ref on the WebKitWebFrame and we should
&gt; +    // be the one holding the last reference.
&gt; +    g_assert_cmpint(G_OBJECT(webFrame)-&gt;ref_count, ==, 1);
&gt; +    g_object_unref(webFrame);
&gt; +}

Do we really want to support having a webView (and Page) destroyed without destroying the mainFrame first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101180</commentid>
    <comment_count>11</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-03 04:17:09 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 25422 [review])
&gt; IIRC:
&gt;    WebCore::Frame and WebCore::FrameLoaderClient have the same lifetime.
&gt; Initially we wanted to have WebKitWebFrame have the same lifetime as well
&gt; otherwise you have to add plenty of NULL checks to WebKitWebFrame... Think of
&gt; someone doing a g_object_ref on the WebKitWebFrame but the page the user
&gt; navigated to was left, the WebCore::Frame destroyed....if WebCore::Frame is
&gt; destroyed before the WebKitWebFrame we will have to add null checks to
&gt; WebKitWebFrame. So what we have instead is something like a circular dependency
&gt; and fail to break the circle. (or alternatively the lifetime of WebKitWebFrame
&gt; should determine the ifetime of WebCore::Frame).

I agree that WebKitWebFrame should determine WebCore::Frame&apos;s lifetime, and FrameLoaderClient should determine WebKitWebFrame&apos;s lifetime? Should we follow Mac in this regard?

&gt; &gt; -    return true;
&gt; &gt; +    return getViewFromFrame(m_frame) != NULL;
&gt; 
&gt; No NULL in C++ code, this should never be false?

Ok. Yup. I&apos;ll add an assert to be safe.

&gt; &gt; +++ b/WebKit/gtk/webkit/webkitwebframe.cpp
&gt; &gt; @@ -97,9 +97,11 @@ static void webkit_web_frame_finalize(GObject* object)
&gt; &gt;      WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object);
&gt; &gt;      WebKitWebFramePrivate* priv = frame-&gt;priv;
&gt; &gt;  
&gt; &gt; -    priv-&gt;coreFrame-&gt;loader()-&gt;cancelAndClear();
&gt; 
&gt; FrameLoader is already gone?

Not yet. I think the rationale was mac and qt are not doing it.

&gt; 
&gt; &gt;      priv-&gt;coreFrame = 0;
&gt; &gt;  
&gt; &gt; +    // priv-&gt;client will be deleted when the WebCore::Frame is actually
&gt; &gt; +    // deleted, which may happen slightly later than WebFrame finalization.
&gt; &gt; +
&gt; 
&gt; this is where the fun starts... A g_object_ref(frame) will keep the
&gt; WebCore::Frame
&gt; alive as well?

See my previous comment (re: do we really want to support that behaviour?)

&gt; &gt;  
&gt; &gt; -    webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object));
&gt; &gt; +    if (Frame* mainFrame = priv-&gt;corePage-&gt;mainFrame())
&gt; &gt; +        mainFrame-&gt;loader()-&gt;detachFromParent();
&gt; 
&gt; hmm... 

I think detachFromParent is the right call here. Again, following Mac and Qt&apos;s impl.

&gt; &gt;      g_object_unref(priv-&gt;webInspector);
&gt; &gt; -    g_object_unref(priv-&gt;mainFrame);
&gt; 
&gt; I have to check this when I&apos;m awake. But we should write something regarding
&gt; the lifetime and ownership of the various components.

I&apos;m fixing up the patch to have something like the ff:

1. WebKitWebFrame determines WebCore::Frame&apos;s lifetime.
2. FrameLoaderClient determines WebKitWebFrame&apos;s lifetime.
3. WebKitWebView triggers creation and destruction of the main frame but doesn&apos;t own it (FrameLoaderClient does).

Any comments/suggestion?

&gt; &gt;  
&gt; &gt; @@ -1878,8 +1885,7 @@ WebKitWebFrame* webkit_web_view_get_main_frame(WebKitWebView* webView)
&gt; &gt;  {
&gt; &gt;      g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
&gt; &gt;  
&gt; &gt; -    WebKitWebViewPrivate* priv = webView-&gt;priv;
&gt; &gt; -    return priv-&gt;mainFrame;
&gt; &gt; +    return kit(core(webView)-&gt;mainFrame());
&gt; 
&gt; 
&gt; this can only make sense if someone is calling get_main_frame from within the
&gt; _finalize of the WebKitWebView? Do we want to support that?

What do you mean?

Thanks for the feedback. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101359</commentid>
    <comment_count>12</comment_count>
      <attachid>25745</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-04 11:46:12 -0800</bug_when>
    <thetext>Created attachment 25745
Updated patch based on feedback from zecke

Updated patch to address Holger&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101474</commentid>
    <comment_count>13</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-05 05:33:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)

&gt; 
&gt; I agree that WebKitWebFrame should determine WebCore::Frame&apos;s lifetime, and
&gt; FrameLoaderClient should determine WebKitWebFrame&apos;s lifetime? Should we follow
&gt; Mac in this regard?

WebCore::Frame and FrameLoaderClient have the same lifetime. So with the above we end up with a circle... The question is what to do. And I start to believe the best way to deal with it, is to not have a circle.

We would end up with:
  WebKitWebView owns the Page. The Page ref&apos;s the WebKitWebFrame..
  WebKitWebFrame has a ref on the WebCore::Frame
  WebKitWebFrame has a pointer to the WebKitWebView and might be zero.
  WebKitWebPage has a pointer to the main frame, it will never be zero.

Truth:
  WebKitWebView has a WebCore::Frame... as the WebCore::Page is/should keep a ref on the main frame. This means the WebKitWebFrame mainFrame is always present.


This means:
  We will have to add null checks in WebKitWebFrame to see if the page/view is gone. Change the references accordingly...



Do you agree on this? If so we can go and start to look at the implementation..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101701</commentid>
    <comment_count>14</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-06 18:22:03 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; WebCore::Frame and FrameLoaderClient have the same lifetime. So with the above
&gt; we end up with a circle... The question is what to do. And I start to believe
&gt; the best way to deal with it, is to not have a circle.

&lt;snip&gt; 

&gt; This means:
&gt;   We will have to add null checks in WebKitWebFrame to see if the page/view is
&gt; gone. Change the references accordingly...

Ok, gotcha. Agreed.

&gt; Do you agree on this? If so we can go and start to look at the implementation..

I&apos;ll check the patch again and upload another one. If you have thoughts on implementation, please let me know.

Also, I think I&apos;ll incorporate your test case in my patch. Is that OK with you?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101702</commentid>
    <comment_count>15</comment_count>
      <attachid>25745</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-12-06 18:22:58 -0800</bug_when>
    <thetext>Comment on attachment 25745
Updated patch based on feedback from zecke

Clearing review flag as this needs update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102162</commentid>
    <comment_count>16</comment_count>
      <attachid>25494</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-10 14:56:44 -0800</bug_when>
    <thetext>Comment on attachment 25494
Add unit test for this bug

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103096</commentid>
    <comment_count>17</comment_count>
      <attachid>26178</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-20 18:56:09 -0800</bug_when>
    <thetext>Created attachment 26178
WIP Stop leaking

Work In Progress. This is not crashing with the test case, according to valgrind we do not leak frame&apos;s.

The FrameLoaderClient will remove the ref of the WebKitWebFrame and trigger destruction...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103126</commentid>
    <comment_count>18</comment_count>
      <attachid>26186</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-12-21 10:52:21 -0800</bug_when>
    <thetext>Created attachment 26186
Fix the reference counting

Make the critical error go away. Please check that no frames are leaked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104118</commentid>
    <comment_count>19</comment_count>
      <attachid>26186</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 10:57:27 -0800</bug_when>
    <thetext>Comment on attachment 26186
Fix the reference counting

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104247</commentid>
    <comment_count>20</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-01-03 12:08:16 -0800</bug_when>
    <thetext>Landed in r39575. Let us see what is breaking.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24617</attachid>
            <date>2008-10-23 14:06:32 -0700</date>
            <delta_ts>2008-11-24 03:06:02 -0800</delta_ts>
            <desc>add a ref in the constructor</desc>
            <filename>bug-21837.patch</filename>
            <type>text/plain</type>
            <size>1253</size>
            <attacher name="Jonathon Jongsma (jonner)">jonathon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNTQ4ZTljZS4uZjQ2OGMzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0xMC0yMyAg
Sm9uYXRob24gSm9uZ3NtYSAgPGpvbmF0aG9uQHF1b3RpZGlhbi5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpGcmFtZUxvYWRlckNsaWVudCk6IHRha2UgYSByZWZlcmVuY2Ugb24gdGhlCisgICAgICAgIG1f
ZnJhbWUgdmFyaWFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLiAgU2luY2Ugd2UgZGlkIG5vdCByZWZl
cmVuY2UgdGhlCisgICAgICAgIGZyYW1lIGJ1dCBkZXJlZmVyZW5jZWQgaXQgaW4gdGhlIGZyYW1l
TG9hZGVyRGVzdHJveWVkKCkgZnVuY3Rpb24KKyAgICAgICAgKGVzc2VudGlhbGx5IHRoZSBkZXN0
cnVjdG9yKSwgd2Ugd2VyZSBnZXR0aW5nIGEgY3JpdGljYWwgd2FybmluZyBhbnl0aW1lCisgICAg
ICAgIGEgd2luZG93IHdhcyBjbG9zZWQgKEJ1ZyAjMjE4MzcpCisKIDIwMDgtMTAtMjIgIEFscCBU
b2tlciAgPGFscEBudWFudGkuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3Igb2xkZXIgR1RL
KyB2ZXJzaW9ucyB3aGVyZSBHVEtfVFlQRV9UQVJHRVRfTElTVCBpc24ndApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5YjRm
ZTlkLi41NmEzZmRiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNjMsNiArNjMsNyBAQCBGcmFtZUxvYWRlckNsaWVudDo6
RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgICwgbV9oYXNTZW50
UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgZ19v
YmplY3RfcmVmKG1fZnJhbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQo=
</data>
<flag name="review"
          id="11236"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24671</attachid>
            <date>2008-10-24 23:48:28 -0700</date>
            <delta_ts>2008-12-21 10:52:21 -0800</delta_ts>
            <desc>Fix leaks</desc>
            <filename>nuanti-frame-leaks-better-new-oct24-6.patch</filename>
            <type>text/plain</type>
            <size>9364</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAzNzgzOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkB0d290b2Fz
dHMuZGU+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5o
IgorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgpAQCAtNjMsNiAr
NjUsNyBAQCBGcmFtZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViCiAgICAgLCBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsK
KyAgICBnX29iamVjdF9yZWYobV9mcmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYWdlbnRQbGF0
Zm9ybSgpCkBAIC0yMzEsOCArMjM0LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQ
cm9ncmVzc0ZpbmkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95
ZWQoKQogewotICAgIGdfb2JqZWN0X3VucmVmKG1fZnJhbWUpOwotICAgIG1fZnJhbWUgPSAwOwor
ICAgIC8vcHJpbnRmKCJmcmFtZUxvYWRlckRlc3Ryb3llZCgpICVwIFdlYkZyYW1lPSVwXG4iLCB0
aGlzLCBtX2ZyYW1lKTsKKyAgICBpZiAobV9mcmFtZSkgeworICAgICAgICAvL21fZnJhbWUtPnBy
aXYtPmNvcmVGcmFtZSA9IDA7CisgICAgICAgIC8vbV9mcmFtZS0+cHJpdi0+Y2xpZW50ID0gMDsK
KworICAgICAgICBtX2ZyYW1lLT5wcml2LT5jbGllbnQgPSAwOworICAgICAgICBnX29iamVjdF91
bnJlZihtX2ZyYW1lKTsKKyAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgfQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCkBAIC0yOTksNyArMzA5LDggQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZQogCiAgICAgQVNTRVJUKGNvcmUoZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFt
ZSgpKSkgPT0gY29yZUZyYW1lLT5wYWdlKCkpOwogICAgIFdlYktpdFdlYkZyYW1lKiBndGtGcmFt
ZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXco
Z2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSgpKSwgb3duZXJFbGVtZW50KSk7Ci0gICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lKGFkb3B0UmVmKGNvcmUoZ3RrRnJhbWUpKSk7CisgICAgLy9SZWZQ
dHI8RnJhbWU+IGNoaWxkRnJhbWUoYWRvcHRSZWYoY29yZShndGtGcmFtZSkpKTsKKyAgICBSZWZQ
dHI8RnJhbWU+IGNoaWxkRnJhbWUgPSBndGtGcmFtZS0+cHJpdi0+Y29yZUZyYW1lOwogCiAgICAg
Y29yZUZyYW1lLT50cmVlKCktPmFwcGVuZENoaWxkKGNoaWxkRnJhbWUpOwogCkBAIC0zOTcsOCAr
NDA4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0TWFpbkZyYW1lRG9jdQogCiBib29s
IEZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpICE9IE5VTEw7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZCgpCkBAIC00NTYsNyArNDY2LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRldGFjaGVkRnJvbVBhcmUKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9t
UGFyZW50MygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvL3ByaW50ZigiZGV0YWNo
ZWRGcm9tUGFyZW50MygpICVwIFdlYkZyYW1lPSVwXG4iLCB0aGlzLCBtX2ZyYW1lKTsKKyAgICBB
U1NFUlQobV9mcmFtZSk7CisgICAgZ19vYmplY3RfdW5yZWYobV9mcmFtZSk7CisgICAgbV9mcmFt
ZSA9IDA7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZEZyb21DYWNoZWRQYWdl
KCkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJKHJldmlzaW9uIDM3ODM4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTMgQEAK
IAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgotI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYkZyYW1lIFdlYktpdFdlYkZyYW1lOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xh
c3MgUGx1Z2luVmlldzsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICBjbGFzcyBGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CkluZGV4
OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShyZXZpc2lvbiAzNzgzOCkKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNiBA
QCBleHRlcm4gIkMiIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7CiAgICAgICAg
IFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKIAotICAgICAgICBXZWJLaXRXZWJGcmFt
ZSogbWFpbkZyYW1lOwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50OwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKIApJbmRleDog
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkocmV2aXNpb24gMzc4MzgpCisrKyBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE0
ICs5MiwzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm9wZXJ0CiAgICAg
fQogfQogCisvL3N0YXRpYyBpbnQgZ1dlYkZyYW1lQ291bnQgPSAwOworCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX2ZyYW1lX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICAvL2dXZWJG
cmFtZUNvdW50LS07CisgICAgLy9wcmludGYoIndlYmtpdF93ZWJfZnJhbWVfZmluYWxpemUoKSAl
cCBjb3VudD0lZFxuIiwgb2JqZWN0LCBnV2ViRnJhbWVDb3VudCk7CiAgICAgV2ViS2l0V2ViRnJh
bWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShvYmplY3QpOwogICAgIFdlYktpdFdlYkZyYW1l
UHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwogCi0gICAgcHJpdi0+Y29yZUZyYW1lLT5sb2Fk
ZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKKworI2lmIDAKKyAgICBpZiAoIXByaXYtPmNvcmVGcmFt
ZSkKKyAgICAgICAgcHJpbnRmKCJ3ZWJraXRfd2ViX2ZyYW1lX2ZpbmFsaXplIGhhcyBubyBjb3Jl
RnJhbWUhXG4iKTsKKworICAgIGlmIChwcml2LT5jb3JlRnJhbWUpIHsKKyAgICAgICAgLy9wcmlu
dGYoIndlYmtpdF93ZWJfZnJhbWVfZmluYWxpemUgc3RpbGwgaGFzIGEgY29yZUZyYW1lIVxuIik7
CisgICAgICAgIC8vcHJpdi0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsK
KyAgICAgICAgcHJpdi0+Y29yZUZyYW1lID0gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIHByaXYt
PmNvcmVGcmFtZSA9IDA7CiAKKyAgICAvLyBwcml2LT5jbGllbnQgd2lsbCBiZSBkZWxldGVkIHdo
ZW4gdGhlIFdlYkNvcmU6OkZyYW1lIGlzIGFjdHVhbGx5CisgICAgLy8gZGVsZXRlZCwgd2hpY2gg
bWF5IGhhcHBlbiBzbGlnaHRseSBsYXRlciB0aGFuIFdlYkZyYW1lIGZpbmFsaXphdGlvbi4KKwog
ICAgIGdfZnJlZShwcml2LT5uYW1lKTsKICAgICBnX2ZyZWUocHJpdi0+dGl0bGUpOwogICAgIGdf
ZnJlZShwcml2LT51cmkpOwpAQCAtMTk4LDYgKzIxNiw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfZnJhbWVfY2xhc3NfaW5pdCgKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9pbml0
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKKyAgICAvL2dXZWJGcmFtZUNvdW50Kys7CisgICAg
Ly9wcmludGYoIndlYmtpdF93ZWJfZnJhbWVfaW5pdCgpICVwIGNvdW50PSVkXG4iLCBmcmFtZSwg
Z1dlYkZyYW1lQ291bnQpOwogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9XRUJfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwogCiAgICAgLy8gVE9ETzogTW92ZSBjb25z
dHJ1Y3RvciBjb2RlIGhlcmUuCkBAIC0yMTEsNiArMjMxLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9mcmFtZV9pbml0KFdlYktpdAogICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViRnJhbWUg
aW5pdGlhbGl6ZWQgd2l0aCBhIGNvbnRyb2xsaW5nICNXZWJLaXRXZWJWaWV3LgogICoKICAqIFJl
dHVybnM6IGEgbmV3ICNXZWJLaXRXZWJGcmFtZQorICoKKyAqIERlcHJlY2F0ZWQ6IDEuMC4yOiAj
V2ViS2l0V2ViRnJhbWUgY2FuIG9ubHkgYmUgdXNlZCB0byBpbnNwZWN0IGV4aXN0aW5nCisgKiBm
cmFtZXMuCiAgKiovCiBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl9mcmFtZV9uZXcoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTIzNiw3ICsyNTksOSBAQCBXZWJLaXRXZWJGcmFtZSog
d2Via2l0X3dlYl9mcmFtZV9pbml0X3dpCiAKICAgICBwcml2LT53ZWJWaWV3ID0gd2ViVmlldzsK
ICAgICBwcml2LT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7
Ci0gICAgcHJpdi0+Y29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZSh2aWV3UHJpdi0+Y29yZVBhZ2Us
IGVsZW1lbnQsIHByaXYtPmNsaWVudCkucmVsZWFzZVJlZigpOworICAgIGdfb2JqZWN0X3VucmVm
KGZyYW1lKTsKKyAgICAvL3ByaXYtPmNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUodmlld1ByaXYt
PmNvcmVQYWdlLCBlbGVtZW50LCBwcml2LT5jbGllbnQpLnJlbGVhc2VSZWYoKTsKKyAgICBwcml2
LT5jb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHZpZXdQcml2LT5jb3JlUGFnZSwgZWxlbWVudCwg
cHJpdi0+Y2xpZW50KTsKICAgICBwcml2LT5jb3JlRnJhbWUtPmluaXQoKTsKIAogICAgIHJldHVy
biBmcmFtZTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAkocmV2aXNpb24gMzc4
MzgpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw4ICs1OCwxMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgewogV0VCS0lU
X0FQSSBHVHlwZQogd2Via2l0X3dlYl9mcmFtZV9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOwog
CisjaWZuZGVmIFdFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
RnJhbWUgKgogd2Via2l0X3dlYl9mcmFtZV9uZXcgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICp3ZWJfdmlldyk7CisjZW5kaWYKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJWaWV3
ICoKIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3ICAgICAgIChXZWJLaXRXZWJGcmFtZSAg
ICAgICAqZnJhbWUpOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlz
aW9uIDM3ODM4KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0OCwxMyArNzQ4LDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19yZWFsX3Bhc3RlX2MKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKIHsKKyAgICAvL3ByaW50Zigid2Via2l0X3dlYl92aWV3X2ZpbmFsaXpl
KCkgJXBcbiIsIG9iamVjdCk7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFVyhvYmplY3QpOwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmll
dy0+cHJpdjsKIAogICAgIHdlYmtpdF93ZWJfdmlld19zdG9wX2xvYWRpbmcoV0VCS0lUX1dFQl9W
SUVXKG9iamVjdCkpOwogCi0gICAgY29yZShwcml2LT5tYWluRnJhbWUpLT5sb2FkZXIoKS0+ZGV0
YWNoQ2hpbGRyZW4oKTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPm1h
aW5GcmFtZSgpKQorICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRldGFjaEZyb21QYXJlbnQoKTsK
KworICAgIC8vY29yZShwcml2LT5tYWluRnJhbWUpLT5sb2FkZXIoKS0+ZGV0YWNoQ2hpbGRyZW4o
KTsKICAgICBkZWxldGUgcHJpdi0+Y29yZVBhZ2U7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSAwOwog
CiAgICAgaWYgKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50KQogICAgICAgICBnX29iamVjdF91
bnJlZihwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCk7CkBAIC03NjMsNyArNzY4LDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYgogICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPmJhY2tGb3J3YXJkTGlzdCk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3Nl
dHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViU2V0
dGluZ3MpOwotICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmpl
Y3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJp
di0+Y29weV90YXJnZXRfbGlzdCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPnBh
c3RlX3RhcmdldF9saXN0KTsKQEAgLTE0NjksNyArMTQ3MywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXCiAjZW5kaWYKIAogICAgIEdUS19XSURHRVRfU0VUX0ZM
QUdTKHdlYlZpZXcsIEdUS19DQU5fRk9DVVMpOwotICAgIHByaXYtPm1haW5GcmFtZSA9IFdFQktJ
VF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOworCisgICAgLy8gVGhp
cyB1bmludHVpdGl2ZWx5IGNyZWF0ZXMgYSBuZXcgV2ViRnJhbWUgYW5kIHNldHMgaXQgYXMgdGhl
IG1haW4gZnJhbWUKKyAgICAvLyBvZiB0aGUgV2ViVmlldyB3aGVuIHRoZSBvd25lciBlbGVtZW50
IGFyZ3VtZW50IGlzIDAuCisgICAgd2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXco
d2ViVmlldywgMCk7CisKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24gPSBwcml2LT5sYXN0
UG9wdXBZUG9zaXRpb24gPSAtMTsKICAgICBwcml2LT5lZGl0YWJsZSA9IGZhbHNlOwogCkBAIC0x
ODEwLDggKzE4MTgsOSBAQCBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl92aWV3X2dldF9tYWlu
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
LCBOVUxMKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKLSAgICByZXR1cm4gcHJpdi0+bWFpbkZyYW1lOworICAgIC8vV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIC8vcmV0dXJuIHByaXYtPm1haW5GcmFtZTsK
KyAgICByZXR1cm4ga2l0KGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKIH0KIAogLyoqCklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDM3ODM4KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3YWl0VG9EdW1wV2F0Y2hk
b2dGaXJlZCgKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2FpdFRvRHVtcChib29s
IHdhaXRVbnRpbERvbmUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCB0aW1lb3V0U2Vjb25kcyA9
IDEwOworICAgIHN0YXRpYyBjb25zdCBpbnQgdGltZW91dFNlY29uZHMgPSAxOwogCiAgICAgbV93
YWl0VG9EdW1wID0gd2FpdFVudGlsRG9uZTsKICAgICBpZiAobV93YWl0VG9EdW1wICYmICF3YWl0
VG9EdW1wV2F0Y2hkb2cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25422</attachid>
            <date>2008-11-24 03:06:02 -0800</date>
            <delta_ts>2008-12-04 11:46:12 -0800</delta_ts>
            <desc>updated and cleaned up Alp&apos;s patch </desc>
            <filename>webkitgtk-frameleaks.patch</filename>
            <type>text/plain</type>
            <size>6228</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggOGQwNWViYy4uNTBjODYwNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOC0xMS0yNCAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBBbHAg
VG9rZXIuIFVwZGF0ZWQgYnkgSmFuIEFsb256by4KKworICAgICAgICBjcml0aWNhbCBlcnJvciBp
biBHdGsgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzcKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6Omhhc1dlYlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50Mik6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKwogMjAwOC0xMS0yMyAgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCBhNTgyNjM3Li4xNDViODc3IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAt
MjMyLDggKzIzMiw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0Zpbmlz
aGVkTm90aWZpY2F0aW9uKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJE
ZXN0cm95ZWQoKQogewotICAgIGdfb2JqZWN0X3VucmVmKG1fZnJhbWUpOwotICAgIG1fZnJhbWUg
PSAwOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBAIC0zMDAsNyArMjk4LDcgQEAgUGFzc1JlZlB0
cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJgogCiAgICAgQVNTRVJUKGNvcmUoZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFt
ZSgpKSkgPT0gY29yZUZyYW1lLT5wYWdlKCkpOwogICAgIFdlYktpdFdlYkZyYW1lKiBndGtGcmFt
ZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXco
Z2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSgpKSwgb3duZXJFbGVtZW50KSk7Ci0gICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lKGFkb3B0UmVmKGNvcmUoZ3RrRnJhbWUpKSk7CisgICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lID0gZ3RrRnJhbWUtPnByaXYtPmNvcmVGcmFtZTsKIAogICAgIGNv
cmVGcmFtZS0+dHJlZSgpLT5hcHBlbmRDaGlsZChjaGlsZEZyYW1lKTsKIApAQCAtMzk4LDggKzM5
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5GcmFtZURvY3VtZW50UmVhZHko
Ym9vbCkKIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6aGFzV2ViVmlldygpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0Vmll
d0Zyb21GcmFtZShtX2ZyYW1lKSAhPSBOVUxMOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpbmlzaExvYWQoKQpAQCAtNDUyLDcgKzQ0OSw5IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OnNldENvcGllc09uU2Nyb2xsKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBB
U1NFUlQobV9mcmFtZSk7CisgICAgZ19vYmplY3RfdW5yZWYobV9mcmFtZSk7CisgICAgbV9mcmFt
ZSA9IDA7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDMo
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDMwNDdhZjQuLjYxMDM1NzQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTcwLDcgKzcwLDYgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKICAgICAgICAgV2ViS2l0V2Vi
SW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3I7CiAKLSAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5G
cmFtZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dDsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nKiB1c2VyQWdlbnQ7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYmZyYW1lLmNwcAppbmRleCA2YTRjNGQ1Li4zZDg1NDhmIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuY3BwCkBAIC05Nyw5ICs5NywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRXZWJGcmFtZSog
ZnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2
YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CiAKLSAgICBwcml2LT5jb3JlRnJhbWUtPmxvYWRlcigp
LT5jYW5jZWxBbmRDbGVhcigpOwogICAgIHByaXYtPmNvcmVGcmFtZSA9IDA7CiAKKyAgICAvLyBw
cml2LT5jbGllbnQgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIFdlYkNvcmU6OkZyYW1lIGlzIGFj
dHVhbGx5CisgICAgLy8gZGVsZXRlZCwgd2hpY2ggbWF5IGhhcHBlbiBzbGlnaHRseSBsYXRlciB0
aGFuIFdlYkZyYW1lIGZpbmFsaXphdGlvbi4KKwogICAgIGdfZnJlZShwcml2LT5uYW1lKTsKICAg
ICBnX2ZyZWUocHJpdi0+dGl0bGUpOwogICAgIGdfZnJlZShwcml2LT51cmkpOwpAQCAtMjM5LDcg
KzI0MSw3IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJf
dmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBIVE1MCiAKICAgICBwcml2LT53ZWJWaWV3ID0g
d2ViVmlldzsKICAgICBwcml2LT5jbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dChmcmFtZSk7Ci0gICAgcHJpdi0+Y29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZSh2aWV3UHJpdi0+
Y29yZVBhZ2UsIGVsZW1lbnQsIHByaXYtPmNsaWVudCkucmVsZWFzZVJlZigpOworICAgIHByaXYt
PmNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUodmlld1ByaXYtPmNvcmVQYWdlLCBlbGVtZW50LCBw
cml2LT5jbGllbnQpOwogICAgIHByaXYtPmNvcmVGcmFtZS0+aW5pdCgpOwogCiAgICAgcmV0dXJu
IGZyYW1lOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlZTRkODQxLi4zM2Ni
NWQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNzU3LDIwICs3NTcsMjMg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
ICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CiAg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0gICAgd2Vi
a2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7CisgICAg
aWYgKEZyYW1lKiBtYWluRnJhbWUgPSBwcml2LT5jb3JlUGFnZS0+bWFpbkZyYW1lKCkpCisgICAg
ICAgIG1haW5GcmFtZS0+bG9hZGVyKCktPmRldGFjaEZyb21QYXJlbnQoKTsKIAotICAgIGNvcmUo
cHJpdi0+bWFpbkZyYW1lKS0+bG9hZGVyKCktPmRldGFjaENoaWxkcmVuKCk7CiAgICAgZGVsZXRl
IHByaXYtPmNvcmVQYWdlOworICAgIHByaXYtPmNvcmVQYWdlID0gMDsKKworLy8gICAgcHJpdi0+
Y2hpbGRyZW4gPSAwOwogCiAgICAgaWYgKHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50KQogICAg
ICAgICBnX29iamVjdF91bnJlZihwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCk7CiAgICAgaWYg
KHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCkKICAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+
dmVydGljYWxBZGp1c3RtZW50KTsKLSAgICBnX29iamVjdF91bnJlZihwcml2LT5iYWNrRm9yd2Fy
ZExpc3QpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53
ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdl
YlZpZXcpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53
ZWJTZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdw
b2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwogICAgIGdf
b2JqZWN0X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2
LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYkluc3BlY3Rv
cik7Ci0gICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKICAgICBnX29iamVjdF91
bnJlZihwcml2LT5pbUNvbnRleHQpOwogICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5j
b3B5X3RhcmdldF9saXN0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVf
dGFyZ2V0X2xpc3QpOwpAQCAtMTUxMyw3ICsxNTE2LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYKIAogICAgIEdUS19X
SURHRVRfU0VUX0ZMQUdTKHdlYlZpZXcsIEdUS19DQU5fRk9DVVMpOwotICAgIHByaXYtPm1haW5G
cmFtZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOwor
CisgICAgLy8gVGhpcyB1bmludHVpdGl2ZWx5IGNyZWF0ZXMgYSBuZXcgV2ViRnJhbWUgYW5kIHNl
dHMgaXQgYXMgdGhlIG1haW4gZnJhbWUKKyAgICAvLyBvZiB0aGUgV2ViVmlldyB3aGVuIHRoZSBv
d25lciBlbGVtZW50IGFyZ3VtZW50IGlzIDAuCisgICAgd2Via2l0X3dlYl9mcmFtZV9pbml0X3dp
dGhfd2ViX3ZpZXcod2ViVmlldywgMCk7CisKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRpb24g
PSBwcml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSAtMTsKICAgICBwcml2LT5lZGl0YWJsZSA9IGZh
bHNlOwogCkBAIC0xODc4LDggKzE4ODUsNyBAQCBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl92
aWV3X2dldF9tYWluX2ZyYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAotICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICByZXR1cm4g
cHJpdi0+bWFpbkZyYW1lOworICAgIHJldHVybiBraXQoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1l
KCkpOwogfQogCiAvKioK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25494</attachid>
            <date>2008-11-25 12:09:54 -0800</date>
            <delta_ts>2008-12-21 10:52:21 -0800</delta_ts>
            <desc>Add unit test for this bug</desc>
            <filename>0003--Gtk-Add-a-test-for-the-life-cycle-of-WebKitWebFra.patch</filename>
            <type>text/plain</type>
            <size>2387</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSAyYzljN2MwYWI0OWE1ZWZmY2ZkNWI1MzNlODcxZTRjYTNmMGQzZWJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFR1ZSwgMjUgTm92IDIwMDggMTc6MDQ6NDcgKzAxMDAKU3ViamVjdDog
W1BBVENIXSBbR3RrK10gQWRkIGEgdGVzdCBmb3IgdGhlIGxpZmUgY3ljbGUgb2YgV2ViS2l0V2Vi
RnJhbWUncyBhcyBvZiBidWcgIzIxODM3CgogICAgQ3JlYXRlIGFuZCBEZXN0cm95IGEgV2ViVmll
dy4gVGhpcyBzaG91bGQgbm90IGNyYXNoLiBBbHNvIHZlcmlmeQogICAgdGhhdCB0aGUgV2ViS2l0
V2ViRnJhbWUgaXMgZGVzdHJveWVkIHdoZW4gZGVzdHJveWluZyB0aGUKICAgIFdlYktpdFdlYlZp
ZXcuCi0tLQogV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMgfCAgIDQxICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMo
KyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMg
Yi9XZWJLaXQvZ3RrL3Rlc3RzL21haW4uYwppbmRleCBjZGYzYTczLi43OWRiZGE3IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3Rlc3RzL21haW4uYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL21haW4u
YwpAQCAtMjIsMTIgKzIyLDUzIEBACiAKICNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDAp
CiAKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9jcmVhdGVfZGVzdHJveSh2b2lk
KQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgZ190ZXN0X2J1ZygiMjE4Mzci
KTsKKworICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygp
KTsKKyAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
R19PQkpFQ1Qod2ViVmlldyktPnJlZl9jb3VudCwgPT0sIDEpOworCisgICAgLy8gVGhpcyBjcmFz
aGVkIHdpdGggdGhlIG9yaWdpbmFsIHZlcnNpb24KKyAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX2ZyYW1lX2xpZmV0aW1lKHZvaWQp
Cit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKKyAgICBXZWJLaXRXZWJGcmFtZSogd2Vi
RnJhbWU7CisgICAgZ190ZXN0X2J1ZygiMjE4MzciKTsKKworICAgIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX29iamVjdF9yZWZfc2luayh3
ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoR19PQkpFQ1Qod2ViVmlldyktPnJlZl9jb3Vu
dCwgPT0sIDEpOworICAgIHdlYkZyYW1lID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1l
KHdlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludChHX09CSkVDVCh3ZWJGcmFtZSktPnJlZl9j
b3VudCwgPT0sIDEpOworCisgICAgLy8gQWRkIGR1bW15IHJlZmVyZW5jZSBvbiB0aGUgV2ViS2l0
V2ViRnJhbWUgdG8ga2VlcCBpdCBhbGl2ZQorICAgIGdfb2JqZWN0X3JlZih3ZWJGcmFtZSk7Cisg
ICAgZ19hc3NlcnRfY21waW50KEdfT0JKRUNUKHdlYkZyYW1lKS0+cmVmX2NvdW50LCA9PSwgMik7
CisKKyAgICAvLyBUaGlzIGNyYXNoZWQgd2l0aCB0aGUgb3JpZ2luYWwgdmVyc2lvbgorICAgIGdf
b2JqZWN0X3VucmVmKHdlYlZpZXcpOworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZyYW1l
IGdvdCBkZWxldGVkIGFzIHdlbGwuIFdlIGRpZCB0aGlzCisgICAgLy8gYnkgYWRkaW5nIGFuIGV4
dHJhIHJlZiBvbiB0aGUgV2ViS2l0V2ViRnJhbWUgYW5kIHdlIHNob3VsZAorICAgIC8vIGJlIHRo
ZSBvbmUgaG9sZGluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgZ19hc3NlcnRfY21waW50KEdf
T0JKRUNUKHdlYkZyYW1lKS0+cmVmX2NvdW50LCA9PSwgMSk7CisgICAgZ19vYmplY3RfdW5yZWYo
d2ViRnJhbWUpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAg
Z190aHJlYWRfaW5pdChOVUxMKTsKICAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgTlVM
TCk7CiAKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOwor
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2NyZWF0ZV9kZXN0cm95IiwgdGVz
dF93ZWJraXRfd2ViX2ZyYW1lX2NyZWF0ZV9kZXN0cm95KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQvd2ViZnJhbWUvbGlmZXRpbWUiLCB0ZXN0X3dlYmtpdF93ZWJfZnJhbWVfbGlmZXRp
bWUpOwogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7CiB9Ci0tIAoxLjUuNi4zCgo=
</data>
<flag name="review"
          id="11845"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25745</attachid>
            <date>2008-12-04 11:46:12 -0800</date>
            <delta_ts>2008-12-21 10:52:21 -0800</delta_ts>
            <desc>Updated patch based on feedback from zecke</desc>
            <filename>webkitgtk-frameleaks.patch</filename>
            <type>text/plain</type>
            <size>11996</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMTJkNDlhMS4uZTQyM2Y1YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOC0xMi0wNCAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzcKKyAgICAgICAgY3JpdGljYWwgZXJyb3IgaW4gR3RrIEZy
YW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCisKKyAgICAgICAgTW92ZSB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgV2ViS2l0V2ViRnJhbWUgY3JlYXRpb24vZGVzdHJ1Y3Rpb24g
dG8gdGhlCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50LiBGb3IgbWFpbiBmcmFtZXMsIFdlYktp
dFdlYlZpZXcgdHJpZ2dlcnMKKyAgICAgICAgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIHRo
ZSBtYWluIFdlYktpdFdlYkZyYW1lLCBidXQgZG9lc24ndAorICAgICAgICBvd24gdGhlbSAtIEZy
YW1lTG9hZGVyQ2xpZW50IGRvZXMuIFNvIHdoZW4gYSBXZWJLaXRXZWJGcmFtZSBpcworICAgICAg
ICBkZXN0cm95ZWQsIEZyYW1lIGFsc28gZGVzdHJveWVkIGFuZCB0aGUgRnJhbWVMb2FkZXJDbGll
bnQgbGF0ZXIgb24uCisKKyAgICAgICAgU29tZSBjb2RlIGlzIGFsc28gaW5zcGlyZWQgYnkgTWFj
LiBXaGF0J3MgbWlzc2luZyBhcmUgdGVzdCBjYXNlcworICAgICAgICB0aGF0IGNvdmVyIHRoZSBl
ZGdlIGNhc2VzLiBCdXQgdGhpcyBmaXhlcyB0aGlzIGJ1ZyBhbmQgdGhlIGxlYWtzCisgICAgICAg
IHNob3duIGluIGEgZGVidWcgYnVpbGQuIE5vIHJlZ3Jlc3Npb24gaW4gTGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpnZXRWaWV3RnJvbUZyYW1lKTogTW92ZWQgZnJvbSB3ZWJraXRwcml2YXRl
IGFzIHRoaXMgaXMKKyAgICAgICAgdGhlIG9ubHkgY2xpZW50LgorICAgICAgICAoV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJp
dmF0ZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcDoKKwogMjAwOC0xMi0wMSAgWGFuIExvcGV6ICA8eGFuQGdub21lLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDRjNTlkMDEuLjcwMzg1NDAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCkBAIC0xNDEsNiArMTQxLDEyIEBAIHN0YXRpYyBTdHJpbmcgY29tcG9zZVVzZXJBZ2Vu
dCgpCiAgICAgcmV0dXJuIHVhOwogfQogCitzdGF0aWMgV2ViS2l0V2ViVmlldyogZ2V0Vmlld0Zy
b21GcmFtZShXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUpCit7CisgICAgQVNTRVJUKHdlYkZyYW1l
KTsKKyAgICByZXR1cm4ga2l0KHdlYkZyYW1lLT5wcml2LT5jb3JlRnJhbWUtPnBhZ2UoKSk7Cit9
CisKIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQogewog
ICAgIGlmIChtX3VzZXJBZ2VudC5pc0VtcHR5KCkpCkBAIC0yMzMsOCArMjM5LDggQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKQogCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCiB7Ci0gICAgZ19v
YmplY3RfdW5yZWYobV9mcmFtZSk7Ci0gICAgbV9mcmFtZSA9IDA7CisgICAgLy8gV2ViS2l0V2Vi
RnJhbWUgc2hvdWxkIGJlIGdvbmUgYnkgbm93LgorICAgIEFTU0VSVCghbV9mcmFtZSk7CiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKQEAgLTI5NywyMyArMzAzLDIzIEBAIFdpZGdldCogRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBFbGVtZW50
KiBlbGVtCiBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBp
bnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CisgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUod2ViRnJhbWUoKSk7CisgICAgQVNTRVJUKGNvcmUod2ViVmlldykgPT0gY29yZUZy
YW1lLT5wYWdlKCkpOwogCi0gICAgQVNTRVJUKGNvcmUoZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFt
ZSgpKSkgPT0gY29yZUZyYW1lLT5wYWdlKCkpOwotICAgIFdlYktpdFdlYkZyYW1lKiBndGtGcmFt
ZSA9IFdFQktJVF9XRUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXco
Z2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSgpKSwgb3duZXJFbGVtZW50KSk7Ci0gICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lKGFkb3B0UmVmKGNvcmUoZ3RrRnJhbWUpKSk7CisgICAgUmVmUHRy
PEZyYW1lPiByZXN1bHQgPSB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF9vd25lcl9lbGVtZW50
KHdlYlZpZXcsIG5hbWUsIG93bmVyRWxlbWVudCk7CiAKLSAgICBjb3JlRnJhbWUtPnRyZWUoKS0+
YXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7CisgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFt
ZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20g
dGhlIHBhZ2UgYWxyZWFkeS4KKyAgICBpZiAoIXJlc3VsdC0+cGFnZSgpKQorICAgICAgICByZXR1
cm4gMDsKIAotICAgIGNoaWxkRnJhbWUtPnRyZWUoKS0+c2V0TmFtZShuYW1lKTsKLSAgICBjaGls
ZEZyYW1lLT5pbml0KCk7Ci0gICAgY2hpbGRGcmFtZS0+bG9hZGVyKCktPmxvYWRVUkwodXJsLCBy
ZWZlcnJlciwgU3RyaW5nKCksIEZyYW1lTG9hZFR5cGVSZWRpcmVjdFdpdGhMb2NrZWRIaXN0b3J5
LCAwLCAwKTsKKyAgICByZXN1bHQtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJs
LCByZWZlcnJlciwgcmVzdWx0LmdldCgpKTsKIAogICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBo
YW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFj
aGlsZEZyYW1lLT50cmVlKCktPnBhcmVudCgpKQorICAgIGlmICghcmVzdWx0LT50cmVlKCktPnBh
cmVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCkBAIC0z
OTksNyArNDA1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0TWFpbkZyYW1lRG9jdW1l
bnRSZWFkeShib29sKQogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3KCkgY29u
c3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChnZXRWaWV3RnJvbUZyYW1l
KG1fZnJhbWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDU4LDcgKzQ2NCw5IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBnX29iamVjdF91bnJlZihtX2ZyYW1lKTsK
KyAgICBtX2ZyYW1lID0gMDsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6bG9hZGVkRnJv
bUNhY2hlZFBhZ2UoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAppbmRleCAwN2M4MTc0
Li5hZDUwNDUwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcApAQCAtMzksMTIgKzM5
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1X
ZWJLaXRXZWJWaWV3KiBnZXRWaWV3RnJvbUZyYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsK
LSAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKLSAgICByZXR1
cm4gcHJpdi0+d2ViVmlldzsKLX0KLQogV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgK
aW5kZXggZDUxMzc1OC4uNzY4Njc1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAt
NDEsMTIgKzQxLDExIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIlBhc3NSZWZQdHIuaCIKIAogI2luY2x1ZGUgPGdsaWIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7Ci0gICAgV2ViS2l0V2ViVmlldyogZ2V0Vmlld0Zyb21GcmFtZShXZWJLaXRXZWJGcmFt
ZSopOwotCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBX
ZWJLaXRXZWJGcmFtZSoga2l0KFdlYkNvcmU6OkZyYW1lKik7CiAKQEAgLTEwMSwxNiArMTAwLDI1
IEBAIGV4dGVybiAiQyIgewogICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZVByaXZh
dGUgV2ViS2l0V2ViRnJhbWVQcml2YXRlOwogICAgIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVQcml2
YXRlIHsKICAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNvcmVGcmFtZTsKLSAg
ICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudDsKKworICAgICAgICAvLyBV
c2Uga2l0KGNvcmVGcmFtZS0+cGFnZSgpKSBpbnN0ZWFkCiAgICAgICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXc7CisgICAgICAgIC8vIFVzZSBjb3JlRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSBp
bnN0ZWFkCisgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQ7CiAKICAg
ICAgICAgZ2NoYXIqIG5hbWU7CiAgICAgICAgIGdjaGFyKiB0aXRsZTsKICAgICAgICAgZ2NoYXIq
IHVyaTsKICAgICB9OwogCi0gICAgV2ViS2l0V2ViRnJhbWUqCi0gICAgd2Via2l0X3dlYl9mcmFt
ZV9pbml0X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCopOworICAgIC8vIHdlYmtpdHdlYmZyYW1lIHByaXZhdGUKKyAgICB2b2lkCisg
ICAgd2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyopOwor
CisgICAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPgorICAgIHdlYmtpdF93ZWJfZnJh
bWVfaW5pdF93aXRoX293bmVyX2VsZW1lbnQoV2ViS2l0V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKKyAgICAvLyBlbmQgd2Via2l0d2ViZnJh
bWUKIAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IDJlZjEyMjQuLmNlN2RiNGEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTk3LDcgKzk3LDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9mcmFtZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViRnJh
bWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShvYmplY3QpOwogICAgIFdlYktpdFdlYkZyYW1l
UHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwogCi0gICAgcHJpdi0+Y29yZUZyYW1lLT5sb2Fk
ZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKKyAgICAvLyBjb3JlRnJhbWUgc2hvdWxkIHN0aWxsIGV4
aXN0IGF0IHRoaXMgcG9pbnQuCisgICAgQVNTRVJUKHByaXYtPmNvcmVGcmFtZSk7CiAgICAgcHJp
di0+Y29yZUZyYW1lID0gMDsKIAogICAgIGdfZnJlZShwcml2LT5uYW1lKTsKQEAgLTIwNCw2ICsy
MDUsMzIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9pbml0KFdlYktpdFdlYkZyYW1l
KiBmcmFtZSkKICAgICBmcmFtZS0+cHJpdiA9IHByaXY7CiB9CiAKKworV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPgord2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfb3duZXJfZWxlbWVu
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBTdHJpbmcmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJFbGVtZW50KQoreworICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZSA9IFdFQktJ
VF9XRUJfRlJBTUUoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgTlVMTCkpOwor
ICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OworICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiB2aWV3UHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3
ZWJWaWV3KTsKKyAgICBXVEY6OlJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0
ZSh2aWV3UHJpdi0+Y29yZVBhZ2UsIG93bmVyRWxlbWVudCwgbmV3IFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnQoZnJhbWUpKTsKKyAgICBwcml2LT5jb3JlRnJhbWUgPSBjb3JlRnJhbWU7CisKKyAg
ICBjb3JlRnJhbWUtPnRyZWUoKS0+c2V0TmFtZShuYW1lKTsKKyAgICBpZiAob3duZXJFbGVtZW50
KSB7CisgICAgICAgIEFTU0VSVChvd25lckVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpOwor
ICAgICAgICBvd25lckVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnRyZWUoKS0+YXBwZW5k
Q2hpbGQoY29yZUZyYW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBjb3JlRnJhbWUtPmluaXQoKTsK
KyAgICByZXR1cm4gY29yZUZyYW1lLnJlbGVhc2UoKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX2Zy
YW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdU
Rjo6UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBmcmFtZSA9IHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93
aXRoX293bmVyX2VsZW1lbnQod2ViVmlldywgU3RyaW5nKCksIDApOworfQorCiAvKioKICAqIHdl
YmtpdF93ZWJfZnJhbWVfbmV3OgogICogQHdlYl92aWV3OiB0aGUgY29udHJvbGxpbmcgI1dlYktp
dFdlYlZpZXcKQEAgLTIzMSwyMCArMjU4LDYgQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJf
ZnJhbWVfbmV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcmV0dXJuIGZyYW1lOwogfQog
Ci1XZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXcoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBlbGVtZW50KQotewot
ICAgIFdlYktpdFdlYkZyYW1lKiBmcmFtZSA9IFdFQktJVF9XRUJfRlJBTUUoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9GUkFNRSwgTlVMTCkpOwotICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0
ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB2aWV3UHJp
diA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLQotICAgIHByaXYtPndl
YlZpZXcgPSB3ZWJWaWV3OwotICAgIHByaXYtPmNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50KGZyYW1lKTsKLSAgICBwcml2LT5jb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHZp
ZXdQcml2LT5jb3JlUGFnZSwgZWxlbWVudCwgcHJpdi0+Y2xpZW50KS5yZWxlYXNlUmVmKCk7Ci0g
ICAgcHJpdi0+Y29yZUZyYW1lLT5pbml0KCk7Ci0KLSAgICByZXR1cm4gZnJhbWU7Ci19Ci0KIC8q
KgogICogd2Via2l0X3dlYl9mcmFtZV9nZXRfdGl0bGU6CiAgKiBAZnJhbWU6IGEgI1dlYktpdFdl
YkZyYW1lCkBAIC0yOTMsNyArMzA2LDcgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl9mcmFt
ZV9nZXRfd2ViX3ZpZXcoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKIAogICAgIFdlYktpdFdl
YkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIHJldHVybiBwcml2LT53ZWJW
aWV3OworICAgIHJldHVybiBraXQocHJpdi0+Y29yZUZyYW1lLT5wYWdlKCkpOwogfQogCiAvKioK
QEAgLTM3Niw3ICszODksNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3RvcF9sb2FkaW5nKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7
CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLT5zdG9w
QWxsTG9hZGVycygpOworICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPnN0b3BGb3JVc2VyQ2FuY2Vs
KCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBiOTRlYzYy
Li4yZThmNjU4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNzcxLDEwICs3
NzEsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVj
dCk7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwogCi0g
ICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KSk7
CisgICAgLy8gRm9sbG93IE1hYy4gZGV0YWNoRnJvbVBhcmVudCgpIHdpbGwgaGFuZGxlIGRlc3Ry
dWN0aW9uIG9mCisgICAgLy8gdGhlIG1haW5GcmFtZSB0aHJvdWdoIEZyYW1lTG9hZGVyQ2xpZW50
LgorICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gcHJpdi0+Y29yZVBhZ2UtPm1haW5GcmFtZSgp
KQorICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAKLSAg
ICBjb3JlKHByaXYtPm1haW5GcmFtZSktPmxvYWRlcigpLT5kZXRhY2hDaGlsZHJlbigpOwogICAg
IGRlbGV0ZSBwcml2LT5jb3JlUGFnZTsKKyAgICBwcml2LT5jb3JlUGFnZSA9IDA7CiAKICAgICBp
ZiAocHJpdi0+aG9yaXpvbnRhbEFkanVzdG1lbnQpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHBy
aXYtPmhvcml6b250YWxBZGp1c3RtZW50KTsKQEAgLTc4NSw3ICs3ODgsNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIGdfb2JqZWN0
X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJJ
bnNwZWN0b3IpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsK
LSAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwogICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPmNvcHlf
dGFyZ2V0X2xpc3QpOwogICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0ZV90YXJn
ZXRfbGlzdCk7CkBAIC0xNjE3LDcgKzE2MTksMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICNlbmRpZgogCiAgICAgR1RLX1dJREdF
VF9TRVRfRkxBR1Mod2ViVmlldywgR1RLX0NBTl9GT0NVUyk7Ci0gICAgcHJpdi0+bWFpbkZyYW1l
ID0gV0VCS0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX25ldyh3ZWJWaWV3KSk7CisKKyAg
ICAvLyBJbml0aWFsaXplIGEgbWFpbiBmcmFtZSB3aXRoICp0aGlzIFdlYktpdFdlYlZpZXcKKyAg
ICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyh3ZWJWaWV3KTsKKwogICAgIHBy
aXYtPmxhc3RQb3B1cFhQb3NpdGlvbiA9IHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOwog
ICAgIHByaXYtPmVkaXRhYmxlID0gZmFsc2U7CiAKQEAgLTIwMzYsMTIgKzIwNDEsMjIgQEAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdW5tYXJrX3RleHRfbWF0Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwog
fQogCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZToKKyAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnMgdGhlIGZyYW1lIHRoYXQgaXMgYXR0
YWNoZWQgdG8gdGhlICNXZWJLaXRXZWJWaWV3CisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dl
YktpdFdlYkZyYW1lIHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhlICNXZWJLaXRXZWJWaWV3LgorICog
VGhlICNXZWJLaXRXZWJGcmFtZSBpcyBvd25lZCBieSBXZWJLaXQgYW5kIHRoZXJlZm9yZSBzaG91
bGQgbm90IGJlIGZyZWVkIG9yCisgKiBtb2RpZmllZC4KKyAqLwogV2ViS2l0V2ViRnJhbWUqIHdl
YmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVM
TCk7CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0g
ICAgcmV0dXJuIHByaXYtPm1haW5GcmFtZTsKKyAgICByZXR1cm4ga2l0KHByaXYtPmNvcmVQYWdl
LT5tYWluRnJhbWUoKSk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26178</attachid>
            <date>2008-12-20 18:56:09 -0800</date>
            <delta_ts>2008-12-21 10:52:21 -0800</delta_ts>
            <desc>WIP Stop leaking</desc>
            <filename>foo.diff</filename>
            <type>text/plain</type>
            <size>10286</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKaW5kZXggN2VmYjRkYi4uNDdjNmMyNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTI0OSw2ICsyNDksNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpCiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKIHsKKyAgICB3
ZWJraXRfd2ViX2ZyYW1lX2NvcmVfZnJhbWVfZ29uZShtX2ZyYW1lKTsKICAgICBnX29iamVjdF91
bnJlZihtX2ZyYW1lKTsKICAgICBtX2ZyYW1lID0gMDsKICAgICBkZWxldGUgdGhpczsKQEAgLTM1
OSw4ICszNjAsOCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUod2ViRnJhbWUoKSk7CiAKICAgICBBU1NFUlQoY29yZShnZXRWaWV3RnJvbUZyYW1l
KHdlYkZyYW1lKCkpKSA9PSBjb3JlRnJhbWUtPnBhZ2UoKSk7Ci0gICAgV2ViS2l0V2ViRnJhbWUq
IGd0a0ZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93
ZWJfdmlldyhnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKCkpLCBvd25lckVsZW1lbnQpKTsKLSAg
ICBSZWZQdHI8RnJhbWU+IGNoaWxkRnJhbWUoYWRvcHRSZWYoY29yZShndGtGcmFtZSkpKTsKKwor
ICAgIFJlZlB0cjxGcmFtZT4gY2hpbGRGcmFtZSA9IHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRo
X3dlYl92aWV3KGdldFZpZXdGcm9tRnJhbWUod2ViRnJhbWUoKSksIG93bmVyRWxlbWVudCk7CiAK
ICAgICBjb3JlRnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKaW5kZXggZWIzNmRjMi4uZTgwMTk4MSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViQ29yZTo6RnJhbWUq
IGNvcmUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFdl
YktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIHJldHVybiBwcml2
ID8gcHJpdi0+Y29yZUZyYW1lLmdldCgpIDogMDsKKyAgICByZXR1cm4gcHJpdiA/IHByaXYtPmNv
cmVGcmFtZSA6IDA7CiB9CiAKIFdlYktpdFdlYkZyYW1lKiBraXQoV2ViQ29yZTo6RnJhbWUqIGNv
cmVGcmFtZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCA4ZjczNGYxLi43N2U3YTU3
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xMDYsOCArMTA2LDcgQEAgZXh0ZXJu
ICJDIiB7CiAgICAgI2RlZmluZSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKG9iaikgICAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0ZSQU1F
LCBXZWJLaXRXZWJGcmFtZVByaXZhdGUpKQogICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJG
cmFtZVByaXZhdGUgV2ViS2l0V2ViRnJhbWVQcml2YXRlOwogICAgIHN0cnVjdCBfV2ViS2l0V2Vi
RnJhbWVQcml2YXRlIHsKLSAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNvcmVG
cmFtZTsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudDsKKyAgICAg
ICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZTsKICAgICAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldzsKIAogICAgICAgICBnY2hhciogbmFtZTsKQEAgLTExNSw5ICsxMTQsMTIgQEAgZXh0ZXJu
ICJDIiB7CiAgICAgICAgIGdjaGFyKiB1cmk7CiAgICAgfTsKIAotICAgIFdlYktpdFdlYkZyYW1l
KgorICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+CiAgICAgd2Via2l0X3dlYl9mcmFtZV9p
bml0X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCopOwogCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfZnJhbWVfY29yZV9mcmFtZV9n
b25lKFdlYktpdFdlYkZyYW1lKik7CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IGZmNGZmMWUu
LmVkOGNjZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTkzLDEzICs5
MywyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZQogICAgIH0KIH0KIAorLy8gQ2FsbGVkIGZy
b20gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHdoZW4gaXQgaXMgZGVzdHJveWVkLiBOb3JtYWxseQor
Ly8gdGhlIHVucmVmIGluIHRoZSBGcmFtZUxvYWRlckNsaWVudCBpcyBkZXN0cm95aW5nIHRoaXMg
b2JqZWN0IGFzCisvLyB3ZWxsIGJ1dCBkdWUgcmVmZXJlbmNlIGNvdW50aW5nIGEgdXNlciBtaWdo
dCBoYXZlIGFkZGVkIGEgcmVmZXJlbmNlLi4uCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfY29yZV9m
cmFtZV9nb25lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBmcmFtZS0+cHJpdi0+Y29y
ZUZyYW1lID0gMDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9maW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dF
Ql9GUkFNRShvYmplY3QpOwogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1l
LT5wcml2OwogCi0gICAgcHJpdi0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIo
KTsKLSAgICBwcml2LT5jb3JlRnJhbWUgPSAwOworICAgIGlmIChwcml2LT5jb3JlRnJhbWUpIHsK
KyAgICAgICAgcHJpdi0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKKyAg
ICAgICAgcHJpdi0+Y29yZUZyYW1lID0gMDsKKyAgICB9CiAKICAgICBnX2ZyZWUocHJpdi0+bmFt
ZSk7CiAgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKQEAgLTIyNSwyNCArMjM1LDI2IEBAIFdlYktp
dFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX25ldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiB2aWV3UHJpdiA9IFdFQktJVF9XRUJfVklFV19HRVRf
UFJJVkFURSh3ZWJWaWV3KTsKIAogICAgIHByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwotICAgIHBy
aXYtPmNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKLSAgICBw
cml2LT5jb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHZpZXdQcml2LT5jb3JlUGFnZSwgMCwgcHJp
di0+Y2xpZW50KS5nZXQoKTsKKyAgICBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQg
PSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7CisgICAgcHJpdi0+Y29yZUZy
YW1lID0gRnJhbWU6OmNyZWF0ZSh2aWV3UHJpdi0+Y29yZVBhZ2UsIDAsIGNsaWVudCkuZ2V0KCk7
CiAgICAgcHJpdi0+Y29yZUZyYW1lLT5pbml0KCk7CiAKICAgICByZXR1cm4gZnJhbWU7CiB9CiAK
LVdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGVsZW1lbnQpCitQYXNz
UmVmUHRyPEZyYW1lPiB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
V2ViS2l0V2ViRnJhbWUqIGZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX0ZSQU1FLCBOVUxMKSk7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBw
cml2ID0gZnJhbWUtPnByaXY7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHZpZXdQcml2ID0g
V0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogCiAgICAgcHJpdi0+d2ViVmll
dyA9IHdlYlZpZXc7Ci0gICAgcHJpdi0+Y2xpZW50ID0gbmV3IFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQoZnJhbWUpOwotICAgIHByaXYtPmNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUodmlld1By
aXYtPmNvcmVQYWdlLCBlbGVtZW50LCBwcml2LT5jbGllbnQpLnJlbGVhc2VSZWYoKTsKKyAgICBX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudChmcmFtZSk7CiAKLSAgICByZXR1cm4gZnJhbWU7CisgICAgUmVmUHRyPEZyYW1lPiBj
b3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHZpZXdQcml2LT5jb3JlUGFnZSwgZWxlbWVudCwgY2xp
ZW50KTsKKyAgICBwcml2LT5jb3JlRnJhbWUgPSBjb3JlRnJhbWUuZ2V0KCk7CisKKyAgICByZXR1
cm4gY29yZUZyYW1lLnJlbGVhc2UoKTsKIH0KIAogLyoqCkBAIC0zMTQsNyArMzI2LDggQEAgR19D
T05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X25hbWUoV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKQogICAgICAgICByZXR1cm4gcHJpdi0+bmFtZTsKIAogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuICIiOwogCiAgICAgU3RyaW5nIHN0cmluZyA9IGNvcmVG
cmFtZS0+dHJlZSgpLT5uYW1lKCk7CiAgICAgcHJpdi0+bmFtZSA9IGdfc3RyZHVwKHN0cmluZy51
dGY4KCkuZGF0YSgpKTsKQEAgLTMzNCw3ICszNDcsOCBAQCBXZWJLaXRXZWJGcmFtZSogd2Via2l0
X3dlYl9mcmFtZV9nZXRfcGFyZW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7Cisg
ICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIGtp
dChjb3JlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpOwogfQpAQCAtMzU2LDcgKzM3MCw4IEBAIHZv
aWQgd2Via2l0X3dlYl9mcmFtZV9sb2FkX3JlcXVlc3QoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBX
ZWJLaXROZXR3b3JrUmVxdWVzdCoKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRX
T1JLX1JFUVVFU1QocmVxdWVzdCkpOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJh
bWUpOwotICAgIEFTU0VSVChjb3JlRnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBUT0RPOiBVc2UgdGhlIFJlc291cmNlUmVxdWVzdCBjYXJyaWVk
IGJ5IFdlYktpdE5ldHdvcmtSZXF1ZXN0IHdoZW4gaXQgaXMgaW1wbGVtZW50ZWQuCiAgICAgU3Ry
aW5nIHN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRf
dXJpKHJlcXVlc3QpKTsKQEAgLTM3NCw3ICszODksOCBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVf
c3RvcF9sb2FkaW5nKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpKTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKGZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRl
cnMoKTsKIH0KQEAgLTM5MCw3ICs0MDYsOCBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfcmVsb2Fk
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfRlJBTUUoZnJhbWUpKTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
LSAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkKCk7CiB9CkBAIC00MTgsNyAr
NDM1LDggQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfZmluZF9mcmFtZShXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KG5hbWUsIE5VTEwpOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAg
IEFTU0VSVChjb3JlRnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4g
TlVMTDsKIAogICAgIFN0cmluZyBuYW1lU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lKTsK
ICAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5maW5kKEF0b21pY1N0cmluZyhuYW1l
U3RyaW5nKSkpOwpAQCAtNDM4LDcgKzQ1Niw4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRf
d2ViX2ZyYW1lX2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwog
CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFTU0VSVChjb3JlRnJh
bWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJl
dHVybiB0b0dsb2JhbFJlZihjb3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKTsKIH0KQEAgLTQ1NCw3ICs0NzMsOCBAQCBHU0xpc3QqIHdlYmtpdF93ZWJfZnJh
bWVfZ2V0X2NoaWxkcmVuKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7CisgICAgaWYg
KCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgR1NMaXN0KiBjaGlsZHJl
biA9IE5VTEw7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBjb3JlRnJhbWUtPnRyZWUoKS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7
CkBAIC00NzgsNyArNDk4LDggQEAgZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3Rl
eHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKGZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IGNv
cmVGcmFtZS0+dmlldygpOwogCkBAIC01MDEsNyArNTIyLDggQEAgZ2NoYXIqIHdlYmtpdF93ZWJf
ZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwogCiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFTU0VSVChjb3JlRnJhbWUpOwor
ICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gZ19zdHJkdXAoIiIpOwogCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAKQEAgLTU1NSw3ICs1NzcsOCBA
QCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfcHJpbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAg
ICAgICB0b3BMZXZlbCA9IE5VTEw7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFt
ZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAg
IHJldHVybjsKIAogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoY29yZUZyYW1lKTsKIApA
QCAtNTkxLDYgKzYxNCw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJG
cmFtZSopCiAKIGJvb2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24oV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFy
KiBlbGVtZW50KQogeworICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7CiAgICAgRWxlbWVudCogY29y
ZUVsZW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWlj
U3RyaW5nKGVsZW1lbnQpKTsKICAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+
cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTk5LDYgKzYyMyw3IEBAIGJv
b2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogbmFtZSwKIAogYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3RyYW5z
aXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRp
bWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KQogeworICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7CiAg
ICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+Z2V0RWxl
bWVudEJ5SWQoQXRvbWljU3RyaW5nKGVsZW1lbnQpKTsKICAgICBpZiAoIWNvcmVFbGVtZW50IHx8
ICFjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlOThkM2Y3Li5kNTNjMDQ5IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CkBAIC03OTMsNyArNzkz
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CiAgICAgZ19vYmplY3Rf
dW5yZWYocHJpdi0+d2ViSW5zcGVjdG9yKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJX
aW5kb3dGZWF0dXJlcyk7Ci0gICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKICAg
ICBnX29iamVjdF91bnJlZihwcml2LT5pbUNvbnRleHQpOwogICAgIGd0a190YXJnZXRfbGlzdF91
bnJlZihwcml2LT5jb3B5X3RhcmdldF9saXN0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYo
cHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26186</attachid>
            <date>2008-12-21 10:52:21 -0800</date>
            <delta_ts>2009-01-02 10:57:27 -0800</delta_ts>
            <desc>Fix the reference counting</desc>
            <filename>0001--GTK-Fix-the-reference-counting-of-WebKitWebFrames.patch</filename>
            <type>text/plain</type>
            <size>16427</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSBjMmI3YTc4MTc5ZjgwYmY0ZjYwN2NjMDM2OTI3MDRkMzE3YTgxNWRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFN1biwgMjEgRGVjIDIwMDggMDQ6MDg6NTcgKzAxMDAKU3ViamVjdDog
W1BBVENIXSBbR1RLXSBGaXggdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZiBXZWJLaXRXZWJGcmFt
ZXMKClRoZSBvd25lcnNoaXAgaXMgdGhlIGZvbGxvd2luZzogV2ViS2l0V2ViVmlldyBvd25zIGEg
V2ViQ29yZTo6UGFnZS4KV2ViS2l0V2ViVmlldyBpcyBjcmVhdGluZyBvbmUgV2ViS2l0V2ViRnJh
bWUgd2hpY2ggd2lsbCBiZSB0aGUKbWFpbkZyYW1lIG9mIHRoZSBXZWJDb3JlOjpQYWdlIChoYXZp
bmcgdGhlIHJlZmVyZW5jZSBvbiB0aGUgRnJhbWUpLgoKVGhlIEZyYW1lTG9hZGVyQ2xpZW50IGhh
cyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBXZWJLaXRXZWJGcmFtZSBmb3IKdGhlIG1haW4gZnJhbWUg
YW5kIGFsc28gYW55IG90aGVyIGZyYW1lLiBUaGlzIG1lYW5zIHdoZW4gdGhlCldlYkNvcmU6OkZy
YW1lIGdvZXMgYXdheSB0aGUgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCBnbyBhd2F5IHdoaWNoCndp
bGwgbm9ybWFsbHkgcmVtb3ZlIHRoZSBsYXN0IHJlZmVyZW5jZSBvZiB0aGUgV2ViS2l0V2ViRnJh
bWUuIEJlY2F1c2UKYW4gQVBJIHVzZXIgbWlnaHQgaGF2ZSBnX29iamVjdF9yZWYnZWQgdGhlIFdl
YktpdFdlYkZyYW1lIG51bGwKY2hlY2tzIGhhZCB0byBiZSBhZGRlZCB0byBXZWJLaXRXZWJGcmFt
ZS4KCkZvciBXZWJDb3JlOjpGcmFtZXMgY3JlYXRlZCBieSB0aGUgRnJhbWVMb2FkZXJDbGllbnQg
dGhlIG93bmVyc2hpcAp3aWxsIGJlIHBhc3NlZCBkb3duIHRvIHRoZSBGcmFtZVRyZWUsIHRoZSBX
ZWJLaXRXZWJGcmFtZSBpcyBub3QgaG9sZGluZwphIHJlZmVyZW5jZSB0byB0aGUgV2ViQ29yZTo6
RnJhbWUuCgpEbyBub3QgZ19vYmplY3RfdW5yZWYgdGhlIG1haW5GcmFtZSBpbiB0aGUgZGVzdHJ1
Y3RvciBvZiB0aGUKV2ViS2l0V2ViRnJhbWUgYXMgdGhpcyB3aWxsIGhhcHBlbiBmcm9tIHdpdGhp
biB0aGUgV2ViQ29yZTo6UGFnZQpkZXN0cnVjdGlvbi4gRG8gbm90IGhvbGQgYSByZWZlcmVuY2Ug
dG8gdGhlIFdlYkNvcmU6OkZyYW1lIChjaXJjbGUpIGluCldlYktpdFdlYkZyYW1lLCBhZGQgbnVs
bCBjaGVja3MgYXMgdGhlIFdlYkNvcmU6OkZyYW1lIG1pZ2h0IGhhdmUgZ29uZQphd2F5LiBEbyBu
b3Qga2VlcCB0cmFjayBvZiB0aGUgRnJhbWVMb2FkZXJDbGllbnQgaW4gdGhlIHByaXZhdGUKc3Ry
dWN0dXJlcyBhcyBpdCB3YXMgbW9zdGx5IHVudXN1ZWQuCgpodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzcKLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDMgKysrKysrKysrKysrKwogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgfCAgICA1ICstCiBXZWJLaXQv
Z3RrL3Rlc3RzL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysrKysr
KysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAg
ICAgICAgICB8ICAgIDggKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAg
ICAgICAgICAgICAgICB8ICAgNjQgKysrKysrKysrKysrKystLS0tLS0KIFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgIHwgICAgMyArLQogNyBmaWxlcyBj
aGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiOWMxYzQ5
Li41MDQ2Y2U1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDA4LTEyLTIxICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEZpeCB0aGUgcmVmZXJlbmNlIGNvdW50
aW5nIG9mIFdlYktpdFdlYkZyYW1lcworICAgICAgICAKKyAgICAgICAgVGhlIG93bmVyc2hpcCBp
cyB0aGUgZm9sbG93aW5nOiBXZWJLaXRXZWJWaWV3IG93bnMgYSBXZWJDb3JlOjpQYWdlLgorICAg
ICAgICBXZWJLaXRXZWJWaWV3IGlzIGNyZWF0aW5nIG9uZSBXZWJLaXRXZWJGcmFtZSB3aGljaCB3
aWxsIGJlIHRoZQorICAgICAgICBtYWluRnJhbWUgb2YgdGhlIFdlYkNvcmU6OlBhZ2UgKGhhdmlu
ZyB0aGUgcmVmZXJlbmNlIG9uIHRoZSBGcmFtZSkuCisgICAgICAgIAorICAgICAgICBUaGUgRnJh
bWVMb2FkZXJDbGllbnQgaGFzIHRoZSByZWZlcmVuY2Ugb2YgdGhlIFdlYktpdFdlYkZyYW1lIGZv
cgorICAgICAgICB0aGUgbWFpbiBmcmFtZSBhbmQgYWxzbyBhbnkgb3RoZXIgZnJhbWUuIFRoaXMg
bWVhbnMgd2hlbiB0aGUKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUgZ29lcyBhd2F5IHRoZSBGcmFt
ZUxvYWRlckNsaWVudCB3aWxsIGdvIGF3YXkgd2hpY2gKKyAgICAgICAgd2lsbCBub3JtYWxseSBy
ZW1vdmUgdGhlIGxhc3QgcmVmZXJlbmNlIG9mIHRoZSBXZWJLaXRXZWJGcmFtZS4gQmVjYXVzZQor
ICAgICAgICBhbiBBUEkgdXNlciBtaWdodCBoYXZlIGdfb2JqZWN0X3JlZidlZCB0aGUgV2ViS2l0
V2ViRnJhbWUgbnVsbAorICAgICAgICBjaGVja3MgaGFkIHRvIGJlIGFkZGVkIHRvIFdlYktpdFdl
YkZyYW1lLgorICAgICAgICAKKyAgICAgICAgRm9yIFdlYkNvcmU6OkZyYW1lcyBjcmVhdGVkIGJ5
IHRoZSBGcmFtZUxvYWRlckNsaWVudCB0aGUgb3duZXJzaGlwCisgICAgICAgIHdpbGwgYmUgcGFz
c2VkIGRvd24gdG8gdGhlIEZyYW1lVHJlZSwgdGhlIFdlYktpdFdlYkZyYW1lIGlzIG5vdCBob2xk
aW5nCisgICAgICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJDb3JlOjpGcmFtZS4KKyAgICAgICAg
CisgICAgICAgIERvIG5vdCBnX29iamVjdF91bnJlZiB0aGUgbWFpbkZyYW1lIGluIHRoZSBkZXN0
cnVjdG9yIG9mIHRoZQorICAgICAgICBXZWJLaXRXZWJGcmFtZSBhcyB0aGlzIHdpbGwgaGFwcGVu
IGZyb20gd2l0aGluIHRoZSBXZWJDb3JlOjpQYWdlCisgICAgICAgIGRlc3RydWN0aW9uLiBEbyBu
b3QgaG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgV2ViQ29yZTo6RnJhbWUgKGNpcmNsZSkgaW4KKyAg
ICAgICAgV2ViS2l0V2ViRnJhbWUsIGFkZCBudWxsIGNoZWNrcyBhcyB0aGUgV2ViQ29yZTo6RnJh
bWUgbWlnaHQgaGF2ZSBnb25lCisgICAgICAgIGF3YXkuIERvIG5vdCBrZWVwIHRyYWNrIG9mIHRo
ZSBGcmFtZUxvYWRlckNsaWVudCBpbiB0aGUgcHJpdmF0ZQorICAgICAgICBzdHJ1Y3R1cmVzIGFz
IGl0IHdhcyBtb3N0bHkgdW51c3VlZC4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzNworCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIHRlc3RzL21haW4uYzogQWRkIHRl
c3QgY2FzZS4KKyAgICAgICAgKHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9jcmVhdGVfZGVzdHJveSk6
CisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfZnJhbWVfbGlmZXRpbWUpOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb3JlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorCiAyMDA4LTEyLTE5ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAK
aW5kZXggN2VmYjRkYi4uNDdjNmMyNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTI0OSw2ICsyNDksNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKIHsKKyAgICB3ZWJr
aXRfd2ViX2ZyYW1lX2NvcmVfZnJhbWVfZ29uZShtX2ZyYW1lKTsKICAgICBnX29iamVjdF91bnJl
ZihtX2ZyYW1lKTsKICAgICBtX2ZyYW1lID0gMDsKICAgICBkZWxldGUgdGhpczsKQEAgLTM1OSw4
ICszNjAsOCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUod2ViRnJhbWUoKSk7CiAKICAgICBBU1NFUlQoY29yZShnZXRWaWV3RnJvbUZyYW1lKHdl
YkZyYW1lKCkpKSA9PSBjb3JlRnJhbWUtPnBhZ2UoKSk7Ci0gICAgV2ViS2l0V2ViRnJhbWUqIGd0
a0ZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJf
dmlldyhnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKCkpLCBvd25lckVsZW1lbnQpKTsKLSAgICBS
ZWZQdHI8RnJhbWU+IGNoaWxkRnJhbWUoYWRvcHRSZWYoY29yZShndGtGcmFtZSkpKTsKKworICAg
IFJlZlB0cjxGcmFtZT4gY2hpbGRGcmFtZSA9IHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dl
Yl92aWV3KGdldFZpZXdGcm9tRnJhbWUod2ViRnJhbWUoKSksIG93bmVyRWxlbWVudCk7CiAKICAg
ICBjb3JlRnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvdGVzdHMvbWFpbi5jIGIvV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMKaW5k
ZXggNjhlNjFkYi4uNjhmNmQ3MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMK
KysrIGIvV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMKQEAgLTIzLDEyICsyMyw1MyBAQAogCiAjaWYg
R0xJQl9DSEVDS19WRVJTSU9OKDIsIDE2LCAwKSAmJiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwg
MCkKIAorc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX2ZyYW1lX2NyZWF0ZV9kZXN0cm95KHZv
aWQpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKKyAgICBnX3Rlc3RfYnVnKCIyMTgz
NyIpOworCisgICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChHX09CSkVDVCh3ZWJWaWV3KS0+cmVmX2NvdW50LCA9PSwgMSk7CisKKyAgICAvLyBUaGlzIGNy
YXNoZWQgd2l0aCB0aGUgb3JpZ2luYWwgdmVyc2lvbgorICAgIGdfb2JqZWN0X3VucmVmKHdlYlZp
ZXcpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfZnJhbWVfbGlmZXRpbWUodm9p
ZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIFdlYktpdFdlYkZyYW1lKiB3
ZWJGcmFtZTsKKyAgICBnX3Rlc3RfYnVnKCIyMTgzNyIpOworCisgICAgd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIGdfb2JqZWN0X3JlZl9zaW5r
KHdlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludChHX09CSkVDVCh3ZWJWaWV3KS0+cmVmX2Nv
dW50LCA9PSwgMSk7CisgICAgd2ViRnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJh
bWUod2ViVmlldyk7CisgICAgZ19hc3NlcnRfY21waW50KEdfT0JKRUNUKHdlYkZyYW1lKS0+cmVm
X2NvdW50LCA9PSwgMSk7CisKKyAgICAvLyBBZGQgZHVtbXkgcmVmZXJlbmNlIG9uIHRoZSBXZWJL
aXRXZWJGcmFtZSB0byBrZWVwIGl0IGFsaXZlCisgICAgZ19vYmplY3RfcmVmKHdlYkZyYW1lKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoR19PQkpFQ1Qod2ViRnJhbWUpLT5yZWZfY291bnQsID09LCAy
KTsKKworICAgIC8vIFRoaXMgY3Jhc2hlZCB3aXRoIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCisgICAg
Z19vYmplY3RfdW5yZWYod2ViVmlldyk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZnJh
bWUgZ290IGRlbGV0ZWQgYXMgd2VsbC4gV2UgZGlkIHRoaXMKKyAgICAvLyBieSBhZGRpbmcgYW4g
ZXh0cmEgcmVmIG9uIHRoZSBXZWJLaXRXZWJGcmFtZSBhbmQgd2Ugc2hvdWxkCisgICAgLy8gYmUg
dGhlIG9uZSBob2xkaW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAgICBnX2Fzc2VydF9jbXBpbnQo
R19PQkpFQ1Qod2ViRnJhbWUpLT5yZWZfY291bnQsID09LCAxKTsKKyAgICBnX29iamVjdF91bnJl
Zih3ZWJGcmFtZSk7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAg
ICBnX3RocmVhZF9pbml0KE5VTEwpOwogICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBO
VUxMKTsKIAogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7
CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvY3JlYXRlX2Rlc3Ryb3kiLCB0
ZXN0X3dlYmtpdF93ZWJfZnJhbWVfY3JlYXRlX2Rlc3Ryb3kpOworICAgIGdfdGVzdF9hZGRfZnVu
YygiL3dlYmtpdC93ZWJmcmFtZS9saWZldGltZSIsIHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9saWZl
dGltZSk7CiAKICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5jcHAKaW5kZXggZWIzNmRjMi4uZTgwMTk4MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFdlYktpdFdlYkZyYW1l
UHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIHJldHVybiBwcml2ID8gcHJpdi0+Y29y
ZUZyYW1lLmdldCgpIDogMDsKKyAgICByZXR1cm4gcHJpdiA/IHByaXYtPmNvcmVGcmFtZSA6IDA7
CiB9CiAKIFdlYktpdFdlYkZyYW1lKiBraXQoV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCA4ZjczNGYxLi43N2U3YTU3IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xMDYsOCArMTA2LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAg
I2RlZmluZSBXRUJLSVRfV0VCX0ZSQU1FX0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLCBXZWJLaXRXZWJG
cmFtZVByaXZhdGUpKQogICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZVByaXZhdGUg
V2ViS2l0V2ViRnJhbWVQcml2YXRlOwogICAgIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVQcml2YXRl
IHsKLSAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNvcmVGcmFtZTsKLSAgICAg
ICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudDsKKyAgICAgICAgV2ViQ29yZTo6
RnJhbWUqIGNvcmVGcmFtZTsKICAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKIAogICAg
ICAgICBnY2hhciogbmFtZTsKQEAgLTExNSw5ICsxMTQsMTIgQEAgZXh0ZXJuICJDIiB7CiAgICAg
ICAgIGdjaGFyKiB1cmk7CiAgICAgfTsKIAotICAgIFdlYktpdFdlYkZyYW1lKgorICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+CiAgICAgd2Via2l0X3dlYl9mcmFtZV9pbml0X3dpdGhfd2Vi
X3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOwog
CisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfZnJhbWVfY29yZV9mcmFtZV9nb25lKFdlYktpdFdl
YkZyYW1lKik7CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IGZmNGZmMWUuLjE5ZmFkMjUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTkzLDEzICs5MywyNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BfaWQsIEdWYWx1ZQogICAgIH0KIH0KIAorLy8gQ2FsbGVkIGZyb20gdGhlIEZyYW1l
TG9hZGVyQ2xpZW50IHdoZW4gaXQgaXMgZGVzdHJveWVkLiBOb3JtYWxseQorLy8gdGhlIHVucmVm
IGluIHRoZSBGcmFtZUxvYWRlckNsaWVudCBpcyBkZXN0cm95aW5nIHRoaXMgb2JqZWN0IGFzCisv
LyB3ZWxsIGJ1dCBkdWUgcmVmZXJlbmNlIGNvdW50aW5nIGEgdXNlciBtaWdodCBoYXZlIGFkZGVk
IGEgcmVmZXJlbmNlLi4uCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfY29yZV9mcmFtZV9nb25lKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1dFQl9GUkFNRShm
cmFtZSkpOworICAgIGZyYW1lLT5wcml2LT5jb3JlRnJhbWUgPSAwOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2ZyYW1lX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJL
aXRXZWJGcmFtZSogZnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKG9iamVjdCk7CiAgICAgV2ViS2l0
V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CiAKLSAgICBwcml2LT5jb3JlRnJh
bWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwotICAgIHByaXYtPmNvcmVGcmFtZSA9IDA7
CisgICAgaWYgKHByaXYtPmNvcmVGcmFtZSkgeworICAgICAgICBwcml2LT5jb3JlRnJhbWUtPmxv
YWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOworICAgICAgICBwcml2LT5jb3JlRnJhbWUgPSAwOwor
ICAgIH0KIAogICAgIGdfZnJlZShwcml2LT5uYW1lKTsKICAgICBnX2ZyZWUocHJpdi0+dGl0bGUp
OwpAQCAtMjI1LDI0ICsyMzYsMjYgQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVf
bmV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHZp
ZXdQcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwogCiAgICAgcHJp
di0+d2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgcHJpdi0+Y2xpZW50ID0gbmV3IFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQoZnJhbWUpOwotICAgIHByaXYtPmNvcmVGcmFtZSA9IEZyYW1lOjpjcmVh
dGUodmlld1ByaXYtPmNvcmVQYWdlLCAwLCBwcml2LT5jbGllbnQpLmdldCgpOworICAgIFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50KGZyYW1lKTsKKyAgICBwcml2LT5jb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHZpZXdQcml2
LT5jb3JlUGFnZSwgMCwgY2xpZW50KS5nZXQoKTsKICAgICBwcml2LT5jb3JlRnJhbWUtPmluaXQo
KTsKIAogICAgIHJldHVybiBmcmFtZTsKIH0KIAotV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJf
ZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8RnJhbWU+IHdlYmtpdF93ZWJfZnJh
bWVfaW5pdF93aXRoX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBXZWJLaXRXZWJGcmFtZSogZnJhbWUgPSBXRUJL
SVRfV0VCX0ZSQU1FKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRlJBTUUsIE5VTEwpKTsK
ICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBmcmFtZS0+cHJpdjsKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogdmlld1ByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
d2ViVmlldyk7CiAKICAgICBwcml2LT53ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBwcml2LT5jbGll
bnQgPSBuZXcgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudChmcmFtZSk7Ci0gICAgcHJpdi0+Y29y
ZUZyYW1lID0gRnJhbWU6OmNyZWF0ZSh2aWV3UHJpdi0+Y29yZVBhZ2UsIGVsZW1lbnQsIHByaXYt
PmNsaWVudCkucmVsZWFzZVJlZigpOworICAgIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqIGNs
aWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKIAotICAgIHJldHVy
biBmcmFtZTsKKyAgICBSZWZQdHI8RnJhbWU+IGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUodmll
d1ByaXYtPmNvcmVQYWdlLCBlbGVtZW50LCBjbGllbnQpOworICAgIHByaXYtPmNvcmVGcmFtZSA9
IGNvcmVGcmFtZS5nZXQoKTsKKworICAgIHJldHVybiBjb3JlRnJhbWUucmVsZWFzZSgpOwogfQog
CiAvKioKQEAgLTMxNCw3ICszMjcsOCBAQCBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dl
Yl9mcmFtZV9nZXRfbmFtZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybiBw
cml2LT5uYW1lOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFT
U0VSVChjb3JlRnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gIiI7
CiAKICAgICBTdHJpbmcgc3RyaW5nID0gY29yZUZyYW1lLT50cmVlKCktPm5hbWUoKTsKICAgICBw
cml2LT5uYW1lID0gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMzM0LDcgKzM0
OCw4IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wYXJlbnQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
RlJBTUUoZnJhbWUpLCBOVUxMKTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1l
KTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAg
cmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KSk7CiB9CkBAIC0zNTYsNyArMzcxLDggQEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfcmVx
dWVzdChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KgogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSk7CiAKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRPRE86IFVz
ZSB0aGUgUmVzb3VyY2VSZXF1ZXN0IGNhcnJpZWQgYnkgV2ViS2l0TmV0d29ya1JlcXVlc3Qgd2hl
biBpdCBpcyBpbXBsZW1lbnRlZC4KICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOwpAQCAtMzc0LDcgKzM5
MCw4IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9zdG9wX2xvYWRpbmcoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkp
OwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFTU0VSVChjb3Jl
RnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBjb3Jl
RnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwogfQpAQCAtMzkwLDcgKzQwNyw4IEBA
IHZvaWQgd2Via2l0X3dlYl9mcmFtZV9yZWxvYWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOwogCiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFTU0VSVChjb3JlRnJhbWUpOworICAg
IGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLT5yZWxvYWQoKTsKIH0KQEAgLTQxOCw3ICs0MzYsOCBAQCBXZWJLaXRXZWJGcmFtZSogd2Vi
a2l0X3dlYl9mcmFtZV9maW5kX2ZyYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2No
YXIqCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgTlVMTCk7CiAKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7CisgICAgaWYg
KCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgU3RyaW5nIG5hbWVTdHJp
bmcgPSBTdHJpbmc6OmZyb21VVEY4KG5hbWUpOwogICAgIHJldHVybiBraXQoY29yZUZyYW1lLT50
cmVlKCktPmZpbmQoQXRvbWljU3RyaW5nKG5hbWVTdHJpbmcpKSk7CkBAIC00MzgsNyArNDU3LDgg
QEAgSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIHRvR2xvYmFsUmVmKGNvcmVGcmFtZS0+
c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOwogfQpAQCAtNDU0LDcgKzQ3
NCw4IEBAIEdTTGlzdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUo
ZnJhbWUpLCBOVUxMKTsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAg
ICBBU1NFUlQoY29yZUZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CiAKICAgICBHU0xpc3QqIGNoaWxkcmVuID0gTlVMTDsKICAgICBmb3IgKEZyYW1lKiBj
aGlsZCA9IGNvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKQEAgLTQ3OCw3ICs0OTksOCBAQCBnY2hhciog
d2Via2l0X3dlYl9mcmFtZV9nZXRfaW5uZXJfdGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwp
OwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIEFTU0VSVChjb3Jl
RnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gZ19zdHJkdXAoIiIp
OwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAKQEAgLTUwMSw3
ICs1MjMsOCBAQCBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9kdW1wX3JlbmRlcl90cmVlKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSkKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0ZSQU1FKGZyYW1lKSwgTlVMTCk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFt
ZSk7Ci0gICAgQVNTRVJUKGNvcmVGcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAg
IHJldHVybiBnX3N0cmR1cCgiIik7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUt
PnZpZXcoKTsKIApAQCAtNTU1LDcgKzU3OCw4IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmlu
dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIHRvcExldmVsID0gTlVMTDsKIAogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBBU1NFUlQoY29yZUZyYW1lKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUHJpbnRDb250ZXh0
IHByaW50Q29udGV4dChjb3JlRnJhbWUpOwogCkBAIC01OTEsNiArNjE1LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX2ZyYW1lX3ByaW50KFdlYktpdFdlYkZyYW1lKikKIAogYm9vbCB3ZWJraXRfd2ViX2Zy
YW1lX3BhdXNlX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBu
YW1lLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpCiB7CisgICAgQVNTRVJUKGNv
cmUoZnJhbWUpKTsKICAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1
bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxlbWVudCkpOwogICAgIGlmICgh
Y29yZUVsZW1lbnQgfHwgIWNvcmVFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01OTksNiArNjI0LDcgQEAgYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX2Fu
aW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLAogCiBib29s
IHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJhbnNpdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IGdjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpCiB7
CisgICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKICAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNv
cmUoZnJhbWUpLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxlbWVu
dCkpOwogICAgIGlmICghY29yZUVsZW1lbnQgfHwgIWNvcmVFbGVtZW50LT5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4
IGU5OGQzZjcuLmQ1M2MwNDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxj
aHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8
eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxh
bHBAYXRva2VyLmNvbT4KQEAgLTc5Myw3ICs3OTMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
PndlYlNldHRpbmdzKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJJbnNwZWN0b3IpOwog
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKLSAgICBnX29iamVj
dF91bnJlZihwcml2LT5tYWluRnJhbWUpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29u
dGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3Qp
OwogICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCk7Ci0t
IAoxLjUuNi4zCgo=
</data>
<flag name="review"
          id="12366"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>