<?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>39302</bug_id>
          
          <creation_ts>2010-05-18 11:22:29 -0700</creation_ts>
          <short_desc>[Chromium] WebDevToolsAgentClient::sendMessageToFrontendOnIOThread needs to be implemented as virtual function</short_desc>
          <delta_ts>2010-06-17 05:27:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>fishd</cc>
    
    <cc>pfeldman</cc>
    
    <cc>victorw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227394</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-05-18 11:22:29 -0700</bug_when>
    <thetext>Here is IORPCDelegate code in WebDevToolsAgentImpl.cpp:

class IORPCDelegate : public DevToolsRPC::Delegate, public Noncopyable {
public:
    IORPCDelegate() { }
    virtual ~IORPCDelegate() { }
    virtual void sendRpcMessage(const WebDevToolsMessageData&amp; data)
    {
        WebDevToolsAgentClient::sendMessageToFrontendOnIOThread(data);
    }
};

WebDevToolsAgentClient::sendMessageToFrontendOnIOThread is implemented in chromium code base (devtools_agent.cc). This prevents us from building webkit as a dll. We should change sendMessageToFrontendOnIOThread to be a virtual function and access it through WebDevToolsAgentClient object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227726</commentid>
    <comment_count>1</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-05-19 00:28:10 -0700</bug_when>
    <thetext>Mikhail, could you look into this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227845</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-05-19 08:58:34 -0700</bug_when>
    <thetext>Yes, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238106</commentid>
    <comment_count>3</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-06-14 15:46:07 -0700</bug_when>
    <thetext>Hi Mikhail,
Any update on this? I am splitting webkit to be a dll for chromium dev build, this issue needs to be fixed in order to move forward. Thanks!

(In reply to comment #2)
&gt; Yes, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238302</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-15 01:45:38 -0700</bug_when>
    <thetext>Victor, I&apos;m sorry for holding you! I already tried once to fix it, but discovered that it&apos;s not trivial, as the call path goes all the way through static methods (that&apos;s why in the current state of affairs it is natural for the method to be static). Then I was distracted, etc. I will try harder, I promise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238518</commentid>
    <comment_count>5</comment_count>
      <attachid>58812</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-15 13:29:02 -0700</bug_when>
    <thetext>Created attachment 58812
proposed patch

Below is the corresponding Chromium change. After applying it, a cleanup change to WebKit will be required.
Also, after applying the WebKit patch, Heap snapshots will stop working until Chromium change will be applied.
I see no other good way of dealing with it, as sendMessageToFrontendOnIOThread is declared and used in
WebKit, but defined in Chromium. Thus, to remove it, we first need to remove its usage (WebKit), then
definition (Chromium), then declaration (WebKit again).

diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc
index 5adfa09..42f32e2 100644
--- a/chrome/renderer/devtools_agent.cc
+++ b/chrome/renderer/devtools_agent.cc
@@ -57,12 +57,14 @@ DevToolsAgent::DevToolsAgent(int routing_id, RenderView* render_view)
     : routing_id_(routing_id),
       render_view_(render_view) {
   agent_for_routing_id_[routing_id] = this;
+  DevToolsAgentFilter::SetDevToolsAgent(this);
 
   CommandLine* cmd = CommandLine::ForCurrentProcess();
   expose_v8_debugger_protocol_ =cmd-&gt;HasSwitch(switches::kRemoteShellPort);
 }
 
 DevToolsAgent::~DevToolsAgent() {
+  DevToolsAgentFilter::SetDevToolsAgent(NULL);
   agent_for_routing_id_.erase(routing_id_);
 }
 
@@ -96,6 +98,13 @@ void DevToolsAgent::sendMessageToFrontend(
   render_view_-&gt;Send(m);
 }
 
+
+void DevToolsAgent::sendMessageToFrontendFromIOThread(
+    const WebKit::WebDevToolsMessageData&amp; data) {
+  DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
+}
+
+
 int DevToolsAgent::hostIdentifier() {
   return routing_id_;
 }
@@ -195,9 +204,3 @@ WebDevToolsAgent* DevToolsAgent::GetWebAgent() {
     return NULL;
   return web_view-&gt;devToolsAgent();
 }
-
-// static
-void WebKit::WebDevToolsAgentClient::sendMessageToFrontendOnIOThread(
-    const WebDevToolsMessageData&amp; data) {
-  DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
-}
diff --git a/chrome/renderer/devtools_agent.h b/chrome/renderer/devtools_agent.h
index 23fa10c..f1262d0 100644
--- a/chrome/renderer/devtools_agent.h
+++ b/chrome/renderer/devtools_agent.h
@@ -40,6 +40,8 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient {
   // WebDevToolsAgentClient implementation
   virtual void sendMessageToFrontend(
       const WebKit::WebDevToolsMessageData&amp; data);
+  virtual void sendMessageToFrontendFromIOThread(
+      const WebKit::WebDevToolsMessageData&amp; data);
 
   virtual int hostIdentifier();
   virtual void forceRepaint();
diff --git a/chrome/renderer/devtools_agent_filter.cc b/chrome/renderer/devtools_agent_filter.cc
index 5eb54ed..01c1be0 100644
--- a/chrome/renderer/devtools_agent_filter.cc
+++ b/chrome/renderer/devtools_agent_filter.cc
@@ -28,6 +28,8 @@ void DevToolsAgentFilter::DispatchMessageLoop() {
 }
 
 // static
+DevToolsAgent* DevToolsAgentFilter::agent_ = NULL;
+// static
 IPC::Channel* DevToolsAgentFilter::channel_ = NULL;
 // static
 int DevToolsAgentFilter::current_routing_id_ = 0;
@@ -65,8 +67,13 @@ void DevToolsAgentFilter::OnDebuggerPauseScript() {
 }
 
 void DevToolsAgentFilter::OnRpcMessage(const DevToolsMessageData&amp; data) {
-  message_handled_ = WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread(
-      data.ToWebDevToolsMessageData());
+  if (agent_ != NULL) {
+    message_handled_ = WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread(
+        agent_,
+        data.ToWebDevToolsMessageData());
+  } else {
+    message_handled_ = false;
+  }
 }
 
 // static
diff --git a/chrome/renderer/devtools_agent_filter.h b/chrome/renderer/devtools_agent_filter.h
index 8d23918..caae82b 100644
--- a/chrome/renderer/devtools_agent_filter.h
+++ b/chrome/renderer/devtools_agent_filter.h
@@ -10,6 +10,7 @@
 
 #include &quot;ipc/ipc_channel_proxy.h&quot;
 
+class DevToolsAgent;
 struct DevToolsMessageData;
 
 // DevToolsAgentFilter is registered as an IPC filter in order to be able to
@@ -25,6 +26,7 @@ class DevToolsAgentFilter : public IPC::ChannelProxy::MessageFilter {
   virtual ~DevToolsAgentFilter();
 
   static void SendRpcMessage(const DevToolsMessageData&amp; data);
+  static void SetDevToolsAgent(DevToolsAgent* agent) { agent_ = agent; }
 
  private:
   // IPC::ChannelProxy::MessageFilter override. Called on IO thread.
@@ -46,6 +48,7 @@ class DevToolsAgentFilter : public IPC::ChannelProxy::MessageFilter {
   // from IO thread.
   static int current_routing_id_;
   static IPC::Channel* channel_;
+  static DevToolsAgent* agent_;
 
   DISALLOW_COPY_AND_ASSIGN(DevToolsAgentFilter);
 };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238519</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 13:31:43 -0700</bug_when>
    <thetext>Attachment 58812 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebDevToolsAgentImpl.cpp:126:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238718</commentid>
    <comment_count>7</comment_count>
      <attachid>58859</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-16 01:20:52 -0700</bug_when>
    <thetext>Created attachment 58859
fixed style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238767</commentid>
    <comment_count>8</comment_count>
      <attachid>58868</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-16 03:19:23 -0700</bug_when>
    <thetext>Created attachment 58868
as we discussed offline

Chromium change is now smaller:


diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc
index 5adfa09..01c66e4 100644
--- a/chrome/renderer/devtools_agent.cc
+++ b/chrome/renderer/devtools_agent.cc
@@ -195,9 +195,3 @@ WebDevToolsAgent* DevToolsAgent::GetWebAgent() {
     return NULL;
   return web_view-&gt;devToolsAgent();
 }
-
-// static
-void WebKit::WebDevToolsAgentClient::sendMessageToFrontendOnIOThread(
-    const WebDevToolsMessageData&amp; data) {
-  DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
-}
diff --git a/chrome/renderer/devtools_agent_filter.cc b/chrome/renderer/devtools_agent_filter.cc
index 5eb54ed..4c98cbe 100644
--- a/chrome/renderer/devtools_agent_filter.cc
+++ b/chrome/renderer/devtools_agent_filter.cc
@@ -64,8 +64,21 @@ void DevToolsAgentFilter::OnDebuggerPauseScript() {
   WebDevToolsAgent::debuggerPauseScript();
 }
 
+namespace {
+
+class WebDevToolsMessageTransportImpl : public WebKit::WebDevToolsMessageTransport {
+ public:
+  void sendMessageToFrontendOnIOThread(const WebKit::WebDevToolsMessageData&amp; data) {
+    DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
+  }
+};
+
+}  // namespace
+
 void DevToolsAgentFilter::OnRpcMessage(const DevToolsMessageData&amp; data) {
+  WebDevToolsMessageTransportImpl transport;
   message_handled_ = WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread(
+      &amp;transport,
       data.ToWebDevToolsMessageData());
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238800</commentid>
    <comment_count>9</comment_count>
      <attachid>58880</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-16 04:52:28 -0700</bug_when>
    <thetext>Created attachment 58880
will not break functionality, but requires 4 steps to commit

Chromium part:


diff --git a/chrome/renderer/devtools_agent_filter.cc b/chrome/renderer/devtools_agent_filter.cc
index 5eb54ed..4c98cbe 100644
--- a/chrome/renderer/devtools_agent_filter.cc
+++ b/chrome/renderer/devtools_agent_filter.cc
@@ -64,8 +64,21 @@ void DevToolsAgentFilter::OnDebuggerPauseScript() {
   WebDevToolsAgent::debuggerPauseScript();
 }
 
+namespace {
+
+class WebDevToolsMessageTransportImpl : public WebKit::WebDevToolsMessageTransport {
+ public:
+  void sendMessageToFrontendOnIOThread(const WebKit::WebDevToolsMessageData&amp; data) {
+    DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
+  }
+};
+
+}  // namespace
+
 void DevToolsAgentFilter::OnRpcMessage(const DevToolsMessageData&amp; data) {
+  WebDevToolsMessageTransportImpl transport;
   message_handled_ = WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread(
+      &amp;transport,
       data.ToWebDevToolsMessageData());
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238954</commentid>
    <comment_count>10</comment_count>
      <attachid>58880</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-16 10:41:38 -0700</bug_when>
    <thetext>Comment on attachment 58880
will not break functionality, but requires 4 steps to commit

WebKit/chromium/public/WebDevToolsAgentClient.h:74
 +  class WebDevToolsMessageTransport {
one file per class please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239021</commentid>
    <comment_count>11</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-16 12:17:33 -0700</bug_when>
    <thetext>OK, will fix this in the next commit.

I wanted to make this class an inner of WebDevToolsAgentClient, but forgot that C++ doesn&apos;t allow forward declarations for inner classes (except inside its containing class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239300</commentid>
    <comment_count>12</comment_count>
      <attachid>58880</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-17 01:52:13 -0700</bug_when>
    <thetext>Comment on attachment 58880
will not break functionality, but requires 4 steps to commit

WebKit/chromium/public/WebDevToolsAgentClient.h:75
 +    public:
style: wrong indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239345</commentid>
    <comment_count>13</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-06-17 05:27:58 -0700</bug_when>
    <thetext>Fixed Yury&apos;s style comment.

Manually committed http://trac.webkit.org/changeset/61320

2010-06-17  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        [Chromium] Prepare to making WebDevToolsAgentClient::sendMessageToFrontendOnIOThread virtual

        https://bugs.webkit.org/show_bug.cgi?id=39302

        * public/WebDevToolsAgent.h:
        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsMessageTransport::~WebDevToolsMessageTransport):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::):
        (WebKit::WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread):</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58812</attachid>
            <date>2010-06-15 13:29:02 -0700</date>
            <delta_ts>2010-06-16 01:20:52 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>fix-39302-patch</filename>
            <type>text/plain</type>
            <size>3489</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE1OGU5NWQuLjJlNzUxNDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTA2LTE1ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBQcmVwYXJlIHRvIG1ha2luZyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkIHZpcnR1YWwKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzMDIKKworICAgICAgICAqIHB1YmxpYy9XZWJE
ZXZUb29sc0FnZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kRnJvbUlPVGhyZWFkKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKToKKwogMjAxMC0w
Ni0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBDaHJvbWl1bSBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50
LmgKaW5kZXggZTNiNTE4Ni4uMmM5MjA0NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0FnZW50LmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkg
c3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCiAgICAgV0VCS0lUX0FQSSBzdGF0
aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0IFdlYkRl
dlRvb2xzTWVzc2FnZURhdGEmKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCosIGNv
bnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKk1lc3Nh
Z2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCmluZGV4IDYyMmY3ODguLjMwYjA1NDEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCkBAIC00MSw2
ICs0MSw3IEBAIHN0cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZEZyb21JT1RocmVhZChjb25zdCBXZWJEZXZUb29sc01l
c3NhZ2VEYXRhJikgeyB9CiAKICAgICAvLyBJbnZhbGlkYXRlcyB3aWRnZXQgd2hpY2ggbGVhZHMg
dG8gdGhlIHJlcGFpbnQuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBjNGJiYmZh
Li4yY2UxYTZjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcApAQCAtMTIzLDEyICsxMjMsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIga1Jlc291cmNlVHJh
Y2tpbmdGZWF0dXJlTmFtZVtdID0gInJlc291cmNlLXRyYWNraW5nIjsKIAogY2xhc3MgSU9SUENE
ZWxlZ2F0ZSA6IHB1YmxpYyBEZXZUb29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6Ci0gICAgSU9SUENEZWxlZ2F0ZSgpIHsgfQorICAgIElPUlBDRGVsZWdhdGUo
KSA6IG1fY2xpZW50KE5VTEwpIHsgfQorICAgIGV4cGxpY2l0IElPUlBDRGVsZWdhdGUoV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogY2xpZW50KSA6IG1fY2xpZW50KGNsaWVudCkgeyB9CiAgICAgdmly
dHVhbCB+SU9SUENEZWxlZ2F0ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZW5kUnBjTWVzc2Fn
ZShjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgV2Vi
RGV2VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChkYXRh
KTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNz
YWdlVG9Gcm9udGVuZEZyb21JT1RocmVhZChkYXRhKTsKICAgICB9CisKK3ByaXZhdGU6CisgICAg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7CiB9OwogCiBjbGFzcyBDbGllbnRNZXNz
YWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OkNsaWVu
dE1lc3NhZ2VMb29wIHsKQEAgLTY1NSw0ICs2NjAsMTIgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0IFdlYkRldlRvb2xz
TWUKICAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRh
dGEpOwogfQogCitib29sIFdlYkRldlRvb2xzQWdlbnQ6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50LCBjb25zdCBXZWJE
ZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQoreworICAgIElPUlBDRGVsZWdhdGUgdHJhbnNwb3J0
KGNsaWVudCk7CisgICAgUHJvZmlsZXJBZ2VudERlbGVnYXRlU3R1YiBzdHViKCZ0cmFuc3BvcnQp
OworICAgIFByb2ZpbGVyQWdlbnRJbXBsIGFnZW50KCZzdHViKTsKKyAgICByZXR1cm4gUHJvZmls
ZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRhdGEpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="45294"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58859</attachid>
            <date>2010-06-16 01:20:52 -0700</date>
            <delta_ts>2010-06-16 03:19:23 -0700</delta_ts>
            <desc>fixed style error</desc>
            <filename>fix-39302-patch</filename>
            <type>text/plain</type>
            <size>3486</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE1OGU5NWQuLjJlNzUxNDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTA2LTE1ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBQcmVwYXJlIHRvIG1ha2luZyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkIHZpcnR1YWwKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzMDIKKworICAgICAgICAqIHB1YmxpYy9XZWJE
ZXZUb29sc0FnZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kRnJvbUlPVGhyZWFkKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKToKKwogMjAxMC0w
Ni0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBDaHJvbWl1bSBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50
LmgKaW5kZXggZTNiNTE4Ni4uMmM5MjA0NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0FnZW50LmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkg
c3RhdGljIHZvaWQgZGVidWdnZXJQYXVzZVNjcmlwdCgpOwogCiAgICAgV0VCS0lUX0FQSSBzdGF0
aWMgYm9vbCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0IFdlYkRl
dlRvb2xzTWVzc2FnZURhdGEmKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCosIGNv
bnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKk1lc3Nh
Z2VMb29wRGlzcGF0Y2hIYW5kbGVyKSgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCmluZGV4IDYyMmY3ODguLjMwYjA1NDEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCkBAIC00MSw2
ICs0MSw3IEBAIHN0cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZEZyb21JT1RocmVhZChjb25zdCBXZWJEZXZUb29sc01l
c3NhZ2VEYXRhJikgeyB9CiAKICAgICAvLyBJbnZhbGlkYXRlcyB3aWRnZXQgd2hpY2ggbGVhZHMg
dG8gdGhlIHJlcGFpbnQuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBjNGJiYmZh
Li4yY2UxYTZjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcApAQCAtMTIzLDEyICsxMjMsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIga1Jlc291cmNlVHJh
Y2tpbmdGZWF0dXJlTmFtZVtdID0gInJlc291cmNlLXRyYWNraW5nIjsKIAogY2xhc3MgSU9SUENE
ZWxlZ2F0ZSA6IHB1YmxpYyBEZXZUb29sc1JQQzo6RGVsZWdhdGUsIHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiBwdWJsaWM6Ci0gICAgSU9SUENEZWxlZ2F0ZSgpIHsgfQorICAgIElPUlBDRGVsZWdhdGUo
KSA6IG1fY2xpZW50KDApIHsgfQorICAgIGV4cGxpY2l0IElPUlBDRGVsZWdhdGUoV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogY2xpZW50KSA6IG1fY2xpZW50KGNsaWVudCkgeyB9CiAgICAgdmlydHVh
bCB+SU9SUENEZWxlZ2F0ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZW5kUnBjTWVzc2FnZShj
b25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgV2ViRGV2
VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kT25JT1RocmVhZChkYXRhKTsK
KyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZEZyb21JT1RocmVhZChkYXRhKTsKICAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
RGV2VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7CiB9OwogCiBjbGFzcyBDbGllbnRNZXNzYWdl
TG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OkNsaWVudE1l
c3NhZ2VMb29wIHsKQEAgLTY1NSw0ICs2NjAsMTIgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50Ojpk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0IFdlYkRldlRvb2xzTWUK
ICAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRhdGEp
OwogfQogCitib29sIFdlYkRldlRvb2xzQWdlbnQ6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50LCBjb25zdCBXZWJEZXZU
b29sc01lc3NhZ2VEYXRhJiBkYXRhKQoreworICAgIElPUlBDRGVsZWdhdGUgdHJhbnNwb3J0KGNs
aWVudCk7CisgICAgUHJvZmlsZXJBZ2VudERlbGVnYXRlU3R1YiBzdHViKCZ0cmFuc3BvcnQpOwor
ICAgIFByb2ZpbGVyQWdlbnRJbXBsIGFnZW50KCZzdHViKTsKKyAgICByZXR1cm4gUHJvZmlsZXJB
Z2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRhdGEpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58868</attachid>
            <date>2010-06-16 03:19:23 -0700</date>
            <delta_ts>2010-06-16 04:52:28 -0700</delta_ts>
            <desc>as we discussed offline</desc>
            <filename>fix-39302-patch</filename>
            <type>text/plain</type>
            <size>3639</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE1OGU5NWQuLjE5NGM2ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTA2LTE2ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBQcmVwYXJlIHRvIG1ha2luZyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkIHZpcnR1YWwKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzMDIKKworICAgICAgICAqIHB1YmxpYy9XZWJE
ZXZUb29sc0FnZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Ojp+V2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKToKKwogMjAxMC0w
Ni0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBDaHJvbWl1bSBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50
LmgKaW5kZXggZTNiNTE4Ni4uYTQ1MzMzMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0FnZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OworY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJh
bnNwb3J0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkxS
ZXF1ZXN0OwpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMg
dm9pZCBkZWJ1Z2dlclBhdXNlU2NyaXB0KCk7CiAKICAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29s
IGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoY29uc3QgV2ViRGV2VG9vbHNN
ZXNzYWdlRGF0YSYpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kT25JT1RocmVhZChXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqLCBjb25z
dCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJik7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpNZXNzYWdl
TG9vcERpc3BhdGNoSGFuZGxlcikoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRldlRvb2xzQWdlbnRDbGllbnQuaAppbmRleCA2MjJmNzg4Li4yNTNhOTQxIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNzEsNiAr
NzEsMTIgQEAgcHJvdGVjdGVkOgogICAgIH5XZWJEZXZUb29sc0FnZW50Q2xpZW50KCkgeyB9CiB9
OwogCitjbGFzcyBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQgeworICBwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJlYWQoY29uc3QgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YSYpID0gMDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggYzRiYmJm
YS4uYTE0NTQ1MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKQEAgLTEyMywxMiArMTIzLDE3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRy
YWNraW5nRmVhdHVyZU5hbWVbXSA9ICJyZXNvdXJjZS10cmFja2luZyI7CiAKIGNsYXNzIElPUlBD
RGVsZWdhdGUgOiBwdWJsaWMgRGV2VG9vbHNSUEM6OkRlbGVnYXRlLCBwdWJsaWMgTm9uY29weWFi
bGUgewogcHVibGljOgotICAgIElPUlBDRGVsZWdhdGUoKSB7IH0KKyAgICBJT1JQQ0RlbGVnYXRl
KCkgOiBtX3RyYW5zcG9ydCgwKSB7IH0KKyAgICBleHBsaWNpdCBJT1JQQ0RlbGVnYXRlKFdlYkRl
dlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0KSA6IG1fdHJhbnNwb3J0KHRyYW5zcG9y
dCkgeyB9CiAgICAgdmlydHVhbCB+SU9SUENEZWxlZ2F0ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZW5kUnBjTWVzc2FnZShjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogICAg
IHsKLSAgICAgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
T25JT1RocmVhZChkYXRhKTsKKyAgICAgICAgaWYgKG1fdHJhbnNwb3J0KQorICAgICAgICAgICAg
bV90cmFuc3BvcnQtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJlYWQoZGF0YSk7CiAgICAg
fQorCitwcml2YXRlOgorICAgIFdlYkRldlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogbV90cmFuc3Bv
cnQ7CiB9OwogCiBjbGFzcyBDbGllbnRNZXNzYWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKQEAgLTY1NSw0ICs2NjAs
MTIgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRP
bklPVGhyZWFkKGNvbnN0IFdlYkRldlRvb2xzTWUKICAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERp
c3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRhdGEpOwogfQogCitib29sIFdlYkRldlRvb2xzQWdl
bnQ6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNNZXNz
YWdlVHJhbnNwb3J0KiB0cmFuc3BvcnQsIGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRh
dGEpCit7CisgICAgSU9SUENEZWxlZ2F0ZSBkZWxlZ2F0ZSh0cmFuc3BvcnQpOworICAgIFByb2Zp
bGVyQWdlbnREZWxlZ2F0ZVN0dWIgc3R1YigmZGVsZWdhdGUpOworICAgIFByb2ZpbGVyQWdlbnRJ
bXBsIGFnZW50KCZzdHViKTsKKyAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNw
YXRjaCgmYWdlbnQsIGRhdGEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58880</attachid>
            <date>2010-06-16 04:52:28 -0700</date>
            <delta_ts>2010-06-17 05:27:12 -0700</delta_ts>
            <desc>will not break functionality, but requires 4 steps to commit</desc>
            <filename>fix-39302-patch</filename>
            <type>text/plain</type>
            <size>3729</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGE1OGU5NWQuLjE5NGM2ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTA2LTE2ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBQcmVwYXJlIHRvIG1ha2luZyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmRPbklPVGhyZWFkIHZpcnR1YWwKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzMDIKKworICAgICAgICAqIHB1YmxpYy9XZWJE
ZXZUb29sc0FnZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0Ojp+V2ViRGV2
VG9vbHNNZXNzYWdlVHJhbnNwb3J0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKToKKwogMjAxMC0w
Ni0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBDaHJvbWl1bSBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50
LmgKaW5kZXggZTNiNTE4Ni4uYTQ1MzMzMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0FnZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OworY2xhc3MgV2ViRGV2VG9vbHNNZXNzYWdlVHJh
bnNwb3J0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkxS
ZXF1ZXN0OwpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMg
dm9pZCBkZWJ1Z2dlclBhdXNlU2NyaXB0KCk7CiAKICAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29s
IGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZE9uSU9UaHJlYWQoY29uc3QgV2ViRGV2VG9vbHNN
ZXNzYWdlRGF0YSYpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kT25JT1RocmVhZChXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQqLCBjb25z
dCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJik7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpNZXNzYWdl
TG9vcERpc3BhdGNoSGFuZGxlcikoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRldlRvb2xzQWdlbnRDbGllbnQuaAppbmRleCA2MjJmNzg4Li4yNTNhOTQxIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQuaApAQCAtNzEsNiAr
NzEsMTIgQEAgcHJvdGVjdGVkOgogICAgIH5XZWJEZXZUb29sc0FnZW50Q2xpZW50KCkgeyB9CiB9
OwogCitjbGFzcyBXZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQgeworICBwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJlYWQoY29uc3QgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YSYpID0gMDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggYzRiYmJm
YS4uYjczMjAyYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKQEAgLTEyMywxMiArMTIzLDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGtSZXNvdXJjZVRy
YWNraW5nRmVhdHVyZU5hbWVbXSA9ICJyZXNvdXJjZS10cmFja2luZyI7CiAKIGNsYXNzIElPUlBD
RGVsZWdhdGUgOiBwdWJsaWMgRGV2VG9vbHNSUEM6OkRlbGVnYXRlLCBwdWJsaWMgTm9uY29weWFi
bGUgewogcHVibGljOgotICAgIElPUlBDRGVsZWdhdGUoKSB7IH0KKyAgICBJT1JQQ0RlbGVnYXRl
KCkgOiBtX3RyYW5zcG9ydCgwKSB7IH0KKyAgICBleHBsaWNpdCBJT1JQQ0RlbGVnYXRlKFdlYkRl
dlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogdHJhbnNwb3J0KSA6IG1fdHJhbnNwb3J0KHRyYW5zcG9y
dCkgeyB9CiAgICAgdmlydHVhbCB+SU9SUENEZWxlZ2F0ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZW5kUnBjTWVzc2FnZShjb25zdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhJiBkYXRhKQogICAg
IHsKLSAgICAgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
T25JT1RocmVhZChkYXRhKTsKKyAgICAgICAgaWYgKG1fdHJhbnNwb3J0KQorICAgICAgICAgICAg
bV90cmFuc3BvcnQtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZE9uSU9UaHJlYWQoZGF0YSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZE9uSU9UaHJlYWQoZGF0YSk7CiAgICAgfQorCitwcml2YXRlOgorICAgIFdlYkRl
dlRvb2xzTWVzc2FnZVRyYW5zcG9ydCogbV90cmFuc3BvcnQ7CiB9OwogCiBjbGFzcyBDbGllbnRN
ZXNzYWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OkNs
aWVudE1lc3NhZ2VMb29wIHsKQEAgLTY1NSw0ICs2NjIsMTIgQEAgYm9vbCBXZWJEZXZUb29sc0Fn
ZW50OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRPbklPVGhyZWFkKGNvbnN0IFdlYkRldlRv
b2xzTWUKICAgICByZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQs
IGRhdGEpOwogfQogCitib29sIFdlYkRldlRvb2xzQWdlbnQ6OmRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZE9uSU9UaHJlYWQoV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0KiB0cmFuc3BvcnQs
IGNvbnN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGEmIGRhdGEpCit7CisgICAgSU9SUENEZWxlZ2F0
ZSBkZWxlZ2F0ZSh0cmFuc3BvcnQpOworICAgIFByb2ZpbGVyQWdlbnREZWxlZ2F0ZVN0dWIgc3R1
YigmZGVsZWdhdGUpOworICAgIFByb2ZpbGVyQWdlbnRJbXBsIGFnZW50KCZzdHViKTsKKyAgICBy
ZXR1cm4gUHJvZmlsZXJBZ2VudERpc3BhdGNoOjpkaXNwYXRjaCgmYWdlbnQsIGRhdGEpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="45397"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="45398"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>