<?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>117153</bug_id>
          
          <creation_ts>2013-06-03 08:55:09 -0700</creation_ts>
          <short_desc>[GTK] Migrate WebKitWebContext to GTask</short_desc>
          <delta_ts>2013-07-03 01:44:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117149</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>896473</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-03 08:55:09 -0700</bug_when>
    <thetext>Migrate WebKitWebContext to GTask</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896474</commentid>
    <comment_count>1</comment_count>
      <attachid>203596</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-03 08:57:22 -0700</bug_when>
    <thetext>Created attachment 203596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896477</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-03 08:59:35 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896533</commentid>
    <comment_count>3</comment_count>
      <attachid>203596</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-06-03 10:31:38 -0700</bug_when>
    <thetext>Comment on attachment 203596
Patch

any reason you kept GetPluginsAsyncData rather than just returning the Vector directly?

If there&apos;s some problem with returning C++ types from GTask, I&apos;d like to fix it if possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896552</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-03 11:19:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 203596 [details])
&gt; any reason you kept GetPluginsAsyncData rather than just returning the Vector directly?
&gt; 
&gt; If there&apos;s some problem with returning C++ types from GTask, I&apos;d like to fix it if possible

I don&apos;t think so, I kept it just because we need a free function anyway, but I guess we can simply allocate the Vector on the heap and use a helper free function as GDestroyNotify to call delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896773</commentid>
    <comment_count>5</comment_count>
      <attachid>203663</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 01:30:15 -0700</bug_when>
    <thetext>Created attachment 203663
Updated patch to get rid of the async data struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896857</commentid>
    <comment_count>6</comment_count>
      <attachid>203663</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-06-04 06:25:49 -0700</bug_when>
    <thetext>Comment on attachment 203663
Updated patch to get rid of the async data struct

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

OK. Belatedly I notice that this has the same issue as the other bug; you&apos;re passing back one data structure via the GTask, and then converting it into a different data structure in the _finish function, when you could instead just be creating the final data structure in webkitWebContextGetPluginThread() and returning it directly. You&apos;d still need to write your own GDestroyNotify though, so this wouldn&apos;t actually simplify anything, it just moves code around. (But stylistically, my theory was that GTask _finish functions should almost always consist of only a call to g_task_propagate_something().

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:498
&gt; +static void deletePluginsVector(void* ptr)
&gt; +{
&gt; +    delete static_cast&lt;Vector&lt;PluginModuleInfo&gt;*&gt;(ptr);
&gt; +}

Hm... I bet you could do cool code-autogenerating things with GTask and templates, a la GRefPtr... :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896864</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 06:36:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 203663 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203663&amp;action=review
&gt; 
&gt; OK. Belatedly I notice that this has the same issue as the other bug; you&apos;re passing back one data structure via the GTask, and then converting it into a different data structure in the _finish function, when you could instead just be creating the final data structure in webkitWebContextGetPluginThread() and returning it directly. You&apos;d still need to write your own GDestroyNotify though, so this wouldn&apos;t actually simplify anything, it just moves code around. (But stylistically, my theory was that GTask _finish functions should almost always consist of only a call to g_task_propagate_something().

Thought about it indeed, but tried to reduce the amount of things done in the thread. Also as you say it wouldn&apos;t simply the code either.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:498
&gt; &gt; +static void deletePluginsVector(void* ptr)
&gt; &gt; +{
&gt; &gt; +    delete static_cast&lt;Vector&lt;PluginModuleInfo&gt;*&gt;(ptr);
&gt; &gt; +}
&gt; 
&gt; Hm... I bet you could do cool code-autogenerating things with GTask and templates, a la GRefPtr... :)

I tried it adding template &lt;typename T*&gt; void deletePtrFunction(T* ptr);. But it doesn&apos;t simply the code either, but rather the opposite with more C++ casts everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896866</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 06:43:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 203663 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203663&amp;action=review
&gt; &gt; 
&gt; &gt; OK. Belatedly I notice that this has the same issue as the other bug; you&apos;re passing back one data structure via the GTask, and then converting it into a different data structure in the _finish function, when you could instead just be creating the final data structure in webkitWebContextGetPluginThread() and returning it directly. You&apos;d still need to write your own GDestroyNotify though, so this wouldn&apos;t actually simplify anything, it just moves code around. (But stylistically, my theory was that GTask _finish functions should almost always consist of only a call to g_task_propagate_something().
&gt; 
&gt; Thought about it indeed, but tried to reduce the amount of things done in the thread. Also as you say it wouldn&apos;t simply the code either.

Actually, creating the GList in the thread we avoid an unnecessary Vector copy and allocation, and we get rid of the delete. Also calling webkitPluginCreate() from the thread shouldn&apos;t be a problem either. I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896872</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 06:53:37 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (From update of attachment 203663 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203663&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; OK. Belatedly I notice that this has the same issue as the other bug; you&apos;re passing back one data structure via the GTask, and then converting it into a different data structure in the _finish function, when you could instead just be creating the final data structure in webkitWebContextGetPluginThread() and returning it directly. You&apos;d still need to write your own GDestroyNotify though, so this wouldn&apos;t actually simplify anything, it just moves code around. (But stylistically, my theory was that GTask _finish functions should almost always consist of only a call to g_task_propagate_something().
&gt; &gt; 
&gt; &gt; Thought about it indeed, but tried to reduce the amount of things done in the thread. Also as you say it wouldn&apos;t simply the code either.
&gt; 
&gt; Actually, creating the GList in the thread we avoid an unnecessary Vector copy and allocation, and we get rid of the delete. Also calling webkitPluginCreate() from the thread shouldn&apos;t be a problem either. I&apos;ll update the patch.

Vector has to be copied, but still I&apos;ll update the patch to create the GList in the thread and simplify _finish().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896904</commentid>
    <comment_count>10</comment_count>
      <attachid>203700</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 08:09:18 -0700</bug_when>
    <thetext>Created attachment 203700
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905746</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-03 01:44:40 -0700</bug_when>
    <thetext>Committed r152344: &lt;http://trac.webkit.org/changeset/152344&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203596</attachid>
            <date>2013-06-03 08:57:22 -0700</date>
            <delta_ts>2013-06-04 01:30:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-gtask-web-context.diff</filename>
            <type>text/plain</type>
            <size>3859</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OGJhMzdmLi5mOWRmZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTMtMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViQ29udGV4dCB0byBHVGFzaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MTUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRH
ZXRQbHVnaW5UaHJlYWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5z
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2gpOgorCisy
MDEzLTA2LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1RLXSBNaWdyYXRlIFdlYktpdFdlYlJlc291cmNlIHRvIEdUYXNrCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcxNTIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA4YmE4M2M0Li4yZDBlYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDk3LDEwICs0OTcsMTEg
QEAgc3RydWN0IEdldFBsdWdpbnNBc3luY0RhdGEgewogfTsKIFdFQktJVF9ERUZJTkVfQVNZTkNf
REFUQV9TVFJVQ1QoR2V0UGx1Z2luc0FzeW5jRGF0YSkKIAotc3RhdGljIHZvaWQgd2Via2l0V2Vi
Q29udGV4dEdldFBsdWdpblRocmVhZChHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCwgR09iamVj
dCogb2JqZWN0LCBHQ2FuY2VsbGFibGUqKQorc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dEdl
dFBsdWdpblRocmVhZChHVGFzayogdGFzaywgZ3BvaW50ZXIgb2JqZWN0LCBncG9pbnRlciB0YXNr
RGF0YSwgR0NhbmNlbGxhYmxlKikKIHsKLSAgICBHZXRQbHVnaW5zQXN5bmNEYXRhKiBkYXRhID0g
c3RhdGljX2Nhc3Q8R2V0UGx1Z2luc0FzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9n
ZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCkpOworICAgIEdldFBsdWdpbnNBc3luY0RhdGEqIGRh
dGEgPSBzdGF0aWNfY2FzdDxHZXRQbHVnaW5zQXN5bmNEYXRhKj4odGFza0RhdGEpOwogICAgIGRh
dGEtPnBsdWdpbnMgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KS0+cHJpdi0+Y29udGV4dC0+
cGx1Z2luSW5mb1N0b3JlKCkucGx1Z2lucygpOworICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0
YXNrLCBUUlVFKTsKIH0KIAogLyoqCkBAIC01MTksMTEgKzUyMCw5IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2dldF9wbHVnaW5zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdDYW5jZWxs
YWJsZSogY2FuCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQo
Y29udGV4dCkpOwogCi0gICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFk
b3B0R1JlZihnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKGNvbnRleHQpLCBjYWxs
YmFjaywgdXNlckRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Bv
aW50ZXI+KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucykpKTsKLSAgICBnX3NpbXBsZV9h
c3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIGNyZWF0ZUdldFBs
dWdpbnNBc3luY0RhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0UGx1Z2lu
c0FzeW5jRGF0YSkpOwotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9ydW5faW5fdGhyZWFkKHJl
c3VsdC5nZXQoKSwgd2Via2l0V2ViQ29udGV4dEdldFBsdWdpblRocmVhZCwgR19QUklPUklUWV9E
RUZBVUxULCBjYW5jZWxsYWJsZSk7CisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1Jl
ZihnX3Rhc2tfbmV3KGNvbnRleHQsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsK
KyAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgpLCBjcmVhdGVHZXRQbHVnaW5zQXN5
bmNEYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRQbHVn
aW5zQXN5bmNEYXRhKSk7CisgICAgZ190YXNrX3J1bl9pbl90aHJlYWQodGFzay5nZXQoKSwgd2Vi
a2l0V2ViQ29udGV4dEdldFBsdWdpblRocmVhZCk7CiB9CiAKIC8qKgpAQCAtNTQwLDE1ICs1Mzks
MTMgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgR0NhbmNlbGxhYmxlKiBjYW4KIEdMaXN0KiB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3BsdWdpbnNfZmluaXNoKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEdfSVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIGNvbnRleHQpLCAwKTsKIAotICAgIEdTaW1wbGVB
c3luY1Jlc3VsdCogc2ltcGxlUmVzdWx0ID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7
Ci0gICAgZ193YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFn
KHNpbXBsZVJlc3VsdCkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKTsKLQotICAg
IGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZVJlc3VsdCwg
ZXJyb3IpKQorICAgIEdUYXNrKiB0YXNrID0gR19UQVNLKHJlc3VsdCk7CisgICAgaWYgKCFnX3Rh
c2tfcHJvcGFnYXRlX2Jvb2xlYW4odGFzaywgZXJyb3IpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEdldFBsdWdpbnNBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRQbHVnaW5zQXN5
bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxl
UmVzdWx0KSk7CisgICAgR2V0UGx1Z2luc0FzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdl
dFBsdWdpbnNBc3luY0RhdGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgR0xp
c3QqIHBsdWdpbnMgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS0+cGx1Z2lu
cy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2lucyA9IGdfbGlzdF9wcmVwZW5kKHBsdWdpbnMs
IHdlYmtpdFBsdWdpbkNyZWF0ZShkYXRhLT5wbHVnaW5zW2ldKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203663</attachid>
            <date>2013-06-04 01:30:15 -0700</date>
            <delta_ts>2013-06-04 08:09:18 -0700</delta_ts>
            <desc>Updated patch to get rid of the async data struct</desc>
            <filename>wk2-gtask-webcontext2.diff</filename>
            <type>text/plain</type>
            <size>4378</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OGJhMzdmLi5mOWRmZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTMtMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViQ29udGV4dCB0byBHVGFzaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MTUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRH
ZXRQbHVnaW5UaHJlYWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5z
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2gpOgorCisy
MDEzLTA2LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1RLXSBNaWdyYXRlIFdlYktpdFdlYlJlc291cmNlIHRvIEdUYXNrCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcxNTIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA4YmE4M2M0Li4yZTk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDkyLDE1ICs0OTIsMTUg
QEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3Rv
cnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5z
ZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGRp
cmVjdG9yeSkpOwogfQogCi1zdHJ1Y3QgR2V0UGx1Z2luc0FzeW5jRGF0YSB7Ci0gICAgVmVjdG9y
PFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnM7Ci19OwotV0VCS0lUX0RFRklORV9BU1lOQ19EQVRB
X1NUUlVDVChHZXRQbHVnaW5zQXN5bmNEYXRhKQorc3RhdGljIHZvaWQgZGVsZXRlUGx1Z2luc1Zl
Y3Rvcih2b2lkKiBwdHIpCit7CisgICAgZGVsZXRlIHN0YXRpY19jYXN0PFZlY3RvcjxQbHVnaW5N
b2R1bGVJbmZvPio+KHB0cik7Cit9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQ
bHVnaW5UaHJlYWQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIEdPYmplY3QqIG9iamVjdCwg
R0NhbmNlbGxhYmxlKikKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQbHVnaW5UaHJl
YWQoR1Rhc2sqIHRhc2ssIGdwb2ludGVyIG9iamVjdCwgZ3BvaW50ZXIgdGFza0RhdGEsIEdDYW5j
ZWxsYWJsZSopCiB7Ci0gICAgR2V0UGx1Z2luc0FzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0
PEdldFBsdWdpbnNBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19n
cG9pbnRlcihyZXN1bHQpKTsKLSAgICBkYXRhLT5wbHVnaW5zID0gV0VCS0lUX1dFQl9DT05URVhU
KG9iamVjdCktPnByaXYtPmNvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLnBsdWdpbnMoKTsKKyAg
ICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmpl
Y3QpLT5wcml2OworICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLCBuZXcgVmVjdG9yPFBs
dWdpbk1vZHVsZUluZm8+KHByaXYtPmNvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLnBsdWdpbnMo
KSksIGRlbGV0ZVBsdWdpbnNWZWN0b3IpOwogfQogCiAvKioKQEAgLTUxOSwxMSArNTE5LDggQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgR0NhbmNlbGxhYmxlKiBjYW4KIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3Vs
dD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qo
Y29udGV4dCksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKSkpOwot
ICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQo
KSwgY3JlYXRlR2V0UGx1Z2luc0FzeW5jRGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRl
c3Ryb3lHZXRQbHVnaW5zQXN5bmNEYXRhKSk7Ci0gICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3J1
bl9pbl90aHJlYWQocmVzdWx0LmdldCgpLCB3ZWJraXRXZWJDb250ZXh0R2V0UGx1Z2luVGhyZWFk
LCBHX1BSSU9SSVRZX0RFRkFVTFQsIGNhbmNlbGxhYmxlKTsKKyAgICBHUmVmUHRyPEdUYXNrPiB0
YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcoY29udGV4dCwgY2FuY2VsbGFibGUsIGNhbGxiYWNr
LCB1c2VyRGF0YSkpOworICAgIGdfdGFza19ydW5faW5fdGhyZWFkKHRhc2suZ2V0KCksIHdlYmtp
dFdlYkNvbnRleHRHZXRQbHVnaW5UaHJlYWQpOwogfQogCiAvKioKQEAgLTU0MCwyMCArNTM3LDE4
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIEdDYW5jZWxsYWJsZSogY2FuCiBHTGlzdCogd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9wbHVnaW5zX2ZpbmlzaChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKLQotICAgIEdTaW1wbGVBc3luY1Jlc3Vs
dCogc2ltcGxlUmVzdWx0ID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7Ci0gICAgZ193
YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZVJl
c3VsdCkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCBjb250ZXh0KSwgMCk7CiAKLSAgICBp
ZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGVSZXN1bHQsIGVy
cm9yKSkKKyAgICBHVGFzayogdGFzayA9IEdfVEFTSyhyZXN1bHQpOworICAgIE93blB0cjxWZWN0
b3I8UGx1Z2luTW9kdWxlSW5mbz4+IHBsdWdpbnMgPSBhZG9wdFB0cihzdGF0aWNfY2FzdDxWZWN0
b3I8UGx1Z2luTW9kdWxlSW5mbz4qPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIodGFzaywgZXJy
b3IpKSk7CisgICAgaWYgKCFwbHVnaW5zKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEdldFBs
dWdpbnNBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRQbHVnaW5zQXN5bmNEYXRhKj4o
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlUmVzdWx0KSk7
Ci0gICAgR0xpc3QqIHBsdWdpbnMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0
YS0+cGx1Z2lucy5zaXplKCk7ICsraSkKLSAgICAgICAgcGx1Z2lucyA9IGdfbGlzdF9wcmVwZW5k
KHBsdWdpbnMsIHdlYmtpdFBsdWdpbkNyZWF0ZShkYXRhLT5wbHVnaW5zW2ldKSk7CisgICAgR0xp
c3QqIHJldHVyblZhbHVlID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMt
PnNpemUoKTsgKytpKQorICAgICAgICByZXR1cm5WYWx1ZSA9IGdfbGlzdF9wcmVwZW5kKHJldHVy
blZhbHVlLCB3ZWJraXRQbHVnaW5DcmVhdGUocGx1Z2lucy0+YXQoaSkpKTsKIAotICAgIHJldHVy
biBwbHVnaW5zOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogLyoqCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203700</attachid>
            <date>2013-06-04 08:09:18 -0700</date>
            <delta_ts>2013-07-02 03:24:40 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-gtask-webcontext3.diff</filename>
            <type>text/plain</type>
            <size>4244</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmNzljN2EyLi45ZTJhZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTMtMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViQ29udGV4dCB0byBHVGFzaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MTUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRH
ZXRQbHVnaW5UaHJlYWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5z
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2gpOgorCisy
MDEzLTA2LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1RLXSBNaWdyYXRlIFdlYktpdFdlYlJlc291cmNlIHRvIEdUYXNrCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcxNTIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA4YmE4M2M0Li4zMTA1NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNDkyLDE1ICs0OTIsMTgg
QEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3Rv
cnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5z
ZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGRp
cmVjdG9yeSkpOwogfQogCi1zdHJ1Y3QgR2V0UGx1Z2luc0FzeW5jRGF0YSB7Ci0gICAgVmVjdG9y
PFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnM7Ci19OwotV0VCS0lUX0RFRklORV9BU1lOQ19EQVRB
X1NUUlVDVChHZXRQbHVnaW5zQXN5bmNEYXRhKQorc3RhdGljIHZvaWQgZGVzdHJveVBsdWdpbkxp
c3QoR0xpc3QqIHBsdWdpbnMpCit7CisgICAgZ19saXN0X2ZyZWVfZnVsbChwbHVnaW5zLCBnX29i
amVjdF91bnJlZik7Cit9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQbHVnaW5U
aHJlYWQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIEdPYmplY3QqIG9iamVjdCwgR0NhbmNl
bGxhYmxlKikKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRHZXRQbHVnaW5UaHJlYWQoR1Rh
c2sqIHRhc2ssIGdwb2ludGVyIG9iamVjdCwgZ3BvaW50ZXIgdGFza0RhdGEsIEdDYW5jZWxsYWJs
ZSopCiB7Ci0gICAgR2V0UGx1Z2luc0FzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFBs
dWdpbnNBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRl
cihyZXN1bHQpKTsKLSAgICBkYXRhLT5wbHVnaW5zID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVj
dCktPnByaXYtPmNvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLnBsdWdpbnMoKTsKKyAgICBWZWN0
b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3Qp
LT5wcml2LT5jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5wbHVnaW5zKCk7CisgICAgR0xpc3Qq
IHJldHVyblZhbHVlID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6
ZSgpOyArK2kpCisgICAgICAgIHJldHVyblZhbHVlID0gZ19saXN0X3ByZXBlbmQocmV0dXJuVmFs
dWUsIHdlYmtpdFBsdWdpbkNyZWF0ZShwbHVnaW5zW2ldKSk7CisgICAgZ190YXNrX3JldHVybl9w
b2ludGVyKHRhc2ssIHJldHVyblZhbHVlLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5
PihkZXN0cm95UGx1Z2luTGlzdCkpOwogfQogCiAvKioKQEAgLTUxOSwxMSArNTIyLDggQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgR0NhbmNlbGxhYmxlKiBjYW4KIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4g
cmVzdWx0ID0gYWRvcHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1QoY29u
dGV4dCksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKSkpOwotICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSwg
Y3JlYXRlR2V0UGx1Z2luc0FzeW5jRGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ry
b3lHZXRQbHVnaW5zQXN5bmNEYXRhKSk7Ci0gICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3J1bl9p
bl90aHJlYWQocmVzdWx0LmdldCgpLCB3ZWJraXRXZWJDb250ZXh0R2V0UGx1Z2luVGhyZWFkLCBH
X1BSSU9SSVRZX0RFRkFVTFQsIGNhbmNlbGxhYmxlKTsKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNr
ID0gYWRvcHRHUmVmKGdfdGFza19uZXcoY29udGV4dCwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1
c2VyRGF0YSkpOworICAgIGdfdGFza19ydW5faW5fdGhyZWFkKHRhc2suZ2V0KCksIHdlYmtpdFdl
YkNvbnRleHRHZXRQbHVnaW5UaHJlYWQpOwogfQogCiAvKioKQEAgLTU0MCwyMCArNTQwLDkgQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgR0NhbmNlbGxhYmxlKiBjYW4KIEdMaXN0KiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Bs
dWdpbnNfZmluaXNoKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0NPTlRFWFQoY29udGV4dCksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdf
SVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOwotCi0gICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBz
aW1wbGVSZXN1bHQgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKLSAgICBnX3dhcm5f
aWZfZmFpbChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlUmVzdWx0
KSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMpOwotCi0gICAgaWYgKGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlUmVzdWx0LCBlcnJvcikpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgR2V0UGx1Z2luc0FzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19j
YXN0PEdldFBsdWdpbnNBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jl
c19ncG9pbnRlcihzaW1wbGVSZXN1bHQpKTsKLSAgICBHTGlzdCogcGx1Z2lucyA9IDA7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLT5wbHVnaW5zLnNpemUoKTsgKytpKQotICAgICAg
ICBwbHVnaW5zID0gZ19saXN0X3ByZXBlbmQocGx1Z2lucywgd2Via2l0UGx1Z2luQ3JlYXRlKGRh
dGEtPnBsdWdpbnNbaV0pKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFs
aWQocmVzdWx0LCBjb250ZXh0KSwgMCk7CiAKLSAgICByZXR1cm4gcGx1Z2luczsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpc3QqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIoR19UQVNLKHJl
c3VsdCksIGVycm9yKSk7CiB9CiAKIC8qKgo=
</data>
<flag name="review"
          id="225176"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>