<?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>151520</bug_id>
          
          <creation_ts>2015-11-20 15:29:21 -0800</creation_ts>
          <short_desc>[GTK] Warning spam from GtkStyleContext</short_desc>
          <delta_ts>2015-12-21 02:13:26 -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>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>150550</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>ht990332</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>otte</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143855</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-20 15:29:21 -0800</bug_when>
    <thetext>Fix the spam of warnings coming from GTK+ 3.19:

(WebKitWebProcess:17185): Gtk-WARNING **: State 0 for context 0x1b5eb70 doesn&apos;t match state 128 set via gtk_style_context_set_state ()

(WebKitWebProcess:17185): Gtk-WARNING **: State 0 for context 0x1b5eb70 doesn&apos;t match state 128 set via gtk_style_context_set_state ()

(WebKitWebProcess:17185): Gtk-WARNING **: State 0 for context 0x1b5eb70 doesn&apos;t match state 128 set via gtk_style_context_set_state ()

(WebKitWebProcess:17185): Gtk-WARNING **: State 0 for context 0x1b5eb70 doesn&apos;t match state 128 set via gtk_style_context_set_state ()

(WebKitWebProcess:17185): Gtk-WARNING **: State 0 for context 0x1b5eb70 doesn&apos;t match state 128 set via gtk_style_context_set_state ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143862</commentid>
    <comment_count>1</comment_count>
      <attachid>266006</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-20 15:48:43 -0800</bug_when>
    <thetext>Created attachment 266006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143943</commentid>
    <comment_count>2</comment_count>
      <attachid>266006</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-21 01:51:58 -0800</bug_when>
    <thetext>Comment on attachment 266006
Patch

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

I guess all these changes are compatible with previous versions of GTK+, right?

&gt; Source/WebCore/ChangeLog:9
&gt; +        Audit every use of gtk_style_context_get_* to fix compatibility with GTK+ 3.19. Some of
&gt; +        these were already fine and are only changed for clarity.

This GTK+ API is more and more confusing . . .

&gt; Source/WebCore/ChangeLog:12
&gt; +        Company:  gtk_style_context_get() (and _get_padding/border/color()) should only ever be
&gt; +                  called with the same state as gtk_style_context_get_state()

What&apos;s the state parameter for then? Why doesn&apos;t it takes the state internally since you have to set it and then pass what you have just set?

&gt; Source/WebCore/ChangeLog:17
&gt; +        Company:  and in very rare cases it needs a gtk_style_context_save() before the set_state(),
&gt; +                  too

How do we know what are those rare cases? Would it be safe to always use save/restore? or does it have an impact in performance?

&gt; Source/WebCore/rendering/RenderThemeGtk.cpp:279
&gt; +    gtk_style_context_save(containerContext);
&gt; +
&gt; +    gtk_style_context_set_state(containerContext, GTK_STATE_FLAG_NORMAL);
&gt; +    gtk_style_context_get_background_color(containerContext, gtk_style_context_get_state(containerContext), &amp;color);

Maybe we should add a style context wrapper to hide all this weird things and ensure it&apos;s not misused in newly written code. It&apos;s not easy to use this API right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143946</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-21 08:11:54 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I guess all these changes are compatible with previous versions of GTK+,
&gt; right?

This patch should all be backwards-compatible, yes. I&apos;ll use #ifdefs where needed in the next patch.

&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        Company:  gtk_style_context_get() (and _get_padding/border/color()) should only ever be
&gt; &gt; +                  called with the same state as gtk_style_context_get_state()
&gt; 
&gt; What&apos;s the state parameter for then? Why doesn&apos;t it takes the state
&gt; internally since you have to set it and then pass what you have just set?

GTK+ could track the state internally with gtk_style_context_save(), gtk_style_context_set_state(), gtk_style_context_restore(). I&apos;m not positive why it was doesn&apos;t: maybe Ben could explain. My guess is that save() and restore() are expensive operations, but it could simply check whether the state is right and do it only if not needed. Instead we&apos;re supposed to do this manually where needed.

&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        Company:  and in very rare cases it needs a gtk_style_context_save() before the set_state(),
&gt; &gt; +                  too
&gt; 
&gt; How do we know what are those rare cases? Would it be safe to always use
&gt; save/restore? or does it have an impact in performance?

It would always be safe to save/restore, but it might impact performance; my understanding is that save() requires a full traversal of the CSS tree to mark nodes that are not to be destroyed when restore() is called, then restore() would have similar complexity. I don&apos;t want to look at the implementation unless I have to, though.

The &quot;rare&quot; cases are the cases where leaving the state of the GtkStyleContext object changed would be the wrong thing to do: e.g. we don&apos;t want to modify the ones we have cached in getStyleContext() or the one in initMediaColors(). In most cases in this patch, all uses were already within save()/restore() pairs. In adjustRectAccordingToMargin() it looked like the state of the GtkStyleContext was not set probably only by mistake; that was the only use I wasn&apos;t entirely sure about. The other changes are just style changes, to call the function with the result of gtk_style_context_get_state() rather than with the state flags that had previously been passed to it.

I wonder if the cache is really useful for performance; I don&apos;t know whether creating a new GtkStyleContext each time would nowadays be worse than the cost of avoiding save()/restore() pairs.

&gt; Maybe we should add a style context wrapper to hide all this weird things
&gt; and ensure it&apos;s not misused in newly written code. It&apos;s not easy to use this
&gt; API right.

I&apos;m not sure we need one, because we only use it in RenderThemeGtk.cpp and ScrollbarThemeGtk.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143948</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2015-11-21 08:31:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; What&apos;s the state parameter for then? Why doesn&apos;t it takes the state
&gt; internally since you have to set it and then pass what you have just set?
&gt;
That parameter is for GTK 3.0. As there is no way to deprecate parameters and gtk_style_context_get_padding_without_state() is kinda crap...
 
&gt; How do we know what are those rare cases? Would it be safe to always use
&gt; save/restore? or does it have an impact in performance?
&gt;
Those are the cases where no save()/restore() had happened before.
 
&gt; Maybe we should add a style context wrapper to hide all this weird things
&gt; and ensure it&apos;s not misused in newly written code. It&apos;s not easy to use this
&gt; API right.
&gt;
It&apos;s a bit tricky. The styling code is evolving all the time and webkit is diving deep down into regions that pretty much depend on cooperation between webkit, gtk and themes to keep working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143950</commentid>
    <comment_count>5</comment_count>
      <attachid>266006</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-21 08:57:54 -0800</bug_when>
    <thetext>Comment on attachment 266006
Patch

Clearing flags on attachment: 266006

Committed r192723: &lt;http://trac.webkit.org/changeset/192723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143951</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-21 08:57:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266006</attachid>
            <date>2015-11-20 15:48:43 -0800</date>
            <delta_ts>2015-11-21 08:57:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151520-20151120174830.patch</filename>
            <type>text/plain</type>
            <size>8563</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODExOWFkYTlmZjE1MDA4
NWM4ZDc2YzhjM2MyYWY3MzNlNWVmODllMy4uMmU5ZTJlYWJlOTYwMDUwNWViYzZmNzIyMGM4NDc0
ZWI2MTYzM2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTExLTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBX
YXJuaW5nIHNwYW0gZnJvbSBHdGtTdHlsZUNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1ZGl0IGV2ZXJ5IHVzZSBvZiBndGtfc3R5bGVfY29u
dGV4dF9nZXRfKiB0byBmaXggY29tcGF0aWJpbGl0eSB3aXRoIEdUSysgMy4xOS4gU29tZSBvZgor
ICAgICAgICB0aGVzZSB3ZXJlIGFscmVhZHkgZmluZSBhbmQgYXJlIG9ubHkgY2hhbmdlZCBmb3Ig
Y2xhcml0eS4KKworICAgICAgICBDb21wYW55OiAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0KCkgKGFu
ZCBfZ2V0X3BhZGRpbmcvYm9yZGVyL2NvbG9yKCkpIHNob3VsZCBvbmx5IGV2ZXIgYmUKKyAgICAg
ICAgICAgICAgICAgIGNhbGxlZCB3aXRoIHRoZSBzYW1lIHN0YXRlIGFzIGd0a19zdHlsZV9jb250
ZXh0X2dldF9zdGF0ZSgpCisgICAgICAgIENvbXBhbnk6ICB1c3VhbGx5IHRoYXQncyBhIHNpbXBs
ZSByZXBsYWNpbmcgb2YgdGhlIG9sZCBzdGF0ZSAobGlrZSBpbiB0aGUgdHJhY2UgeW91IHBvc3Rl
ZCkKKyAgICAgICAgQ29tcGFueTogIHNvbWV0aW1lcyBpdCByZXF1aXJlcyBjYWxsaW5nIGd0a19z
dHlsZV9jb250ZXh0X3NldF9zYXRlKCkgd2l0aCB0aGUgcmlnaHQgc3RhdGUKKyAgICAgICAgICAg
ICAgICAgIGZpcnN0CisgICAgICAgIENvbXBhbnk6ICBhbmQgaW4gdmVyeSByYXJlIGNhc2VzIGl0
IG5lZWRzIGEgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZSgpIGJlZm9yZSB0aGUgc2V0X3N0YXRlKCks
CisgICAgICAgICAgICAgICAgICB0b28KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RSZWN0QWNjb3JkaW5nVG9N
YXJnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAg
IChndGtfY3NzX3NlY3Rpb25fcHJpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3R5bGVDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjppbml0TWVkaWFDb2xvcnMp
OgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dENvbWJvQm94TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFp
bnRNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0
RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAoV2ViQ29yZTo6c3BpbkJ1dHRvbkFycm93U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c3R5bGVDb2xvcik6CisKIDIwMTUtMTEtMjAgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBVc2UgSFRUUEhlYWRlck5h
bWUgYXMgbXVjaCBhcyBwb3NzaWJsZSBpbiBYTUxIdHRwUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggNzBjZjE5NTBi
YTdmMzgwODRlODBlN2M4ZjE5NzhmN2YwMTI3OTgyNC4uZWZhYWIzMDExY2QxYTMyMmIxN2NkZDAx
NzFmNDRlYjRjYzMxNWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0yODEsNyArMjgxLDggQEAgc3RhdGljIHZvaWQgYXBw
bHlTY3JvbGxiYXJTdHlsZUNvbnRleHRDbGFzc2VzKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmEKIHN0YXRpYyB2b2lkIGFkanVzdFJlY3RBY2NvcmRpbmdUb01hcmdpbihHdGtTdHls
ZUNvbnRleHQqIGNvbnRleHQsIEd0a1N0YXRlRmxhZ3Mgc3RhdGUsIEludFJlY3QmIHJlY3QpCiB7
CiAgICAgR3RrQm9yZGVyIG1hcmdpbjsKLSAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfbWFyZ2lu
KGNvbnRleHQsIHN0YXRlLCAmbWFyZ2luKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3Rh
dGUoY29udGV4dCwgc3RhdGUpOworICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9tYXJnaW4oY29u
dGV4dCwgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0YXRlKGNvbnRleHQpLCAmbWFyZ2luKTsKICAg
ICByZWN0Lm1vdmUobWFyZ2luLmxlZnQsIG1hcmdpbi5yaWdodCk7CiAgICAgcmVjdC5jb250cmFj
dChtYXJnaW4ubGVmdCArIG1hcmdpbi5yaWdodCwgbWFyZ2luLnRvcCArIG1hcmdpbi5ib3R0b20p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXgg
NGI2MmUyZGE2MWIyMDhkNzBkOTM1YjMxYWRiM2RlZjI5MzBiY2VlNy4uMWQyZTg0MzNlYzc1NDdi
YjFiZjZiZjBlZTE1YzUzYTY3ZTRlMTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yNzMsMTIgKzI3MywxOSBAQCB2b2lkIFJlbmRlclRoZW1l
R3RrOjppbml0TWVkaWFDb2xvcnMoKQogICAgIEdka1JHQkEgY29sb3I7CiAgICAgR3RrU3R5bGVD
b250ZXh0KiBjb250YWluZXJDb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KEdUS19UWVBFX0NPTlRB
SU5FUik7CiAKLSAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfYmFja2dyb3VuZF9jb2xvcihjb250
YWluZXJDb250ZXh0LCBHVEtfU1RBVEVfRkxBR19OT1JNQUwsICZjb2xvcik7CisgICAgZ3RrX3N0
eWxlX2NvbnRleHRfc2F2ZShjb250YWluZXJDb250ZXh0KTsKKworICAgIGd0a19zdHlsZV9jb250
ZXh0X3NldF9zdGF0ZShjb250YWluZXJDb250ZXh0LCBHVEtfU1RBVEVfRkxBR19OT1JNQUwpOwor
ICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9iYWNrZ3JvdW5kX2NvbG9yKGNvbnRhaW5lckNvbnRl
eHQsIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdGF0ZShjb250YWluZXJDb250ZXh0KSwgJmNvbG9y
KTsKICAgICBtX3BhbmVsQ29sb3IgPSBjb2xvcjsKLSAgICBndGtfc3R5bGVfY29udGV4dF9nZXRf
YmFja2dyb3VuZF9jb2xvcihjb250YWluZXJDb250ZXh0LCBHVEtfU1RBVEVfRkxBR19BQ1RJVkUs
ICZjb2xvcik7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRhaW5lckNvbnRl
eHQsIEdUS19TVEFURV9GTEFHX0FDVElWRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X2Jh
Y2tncm91bmRfY29sb3IoY29udGFpbmVyQ29udGV4dCwgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0
YXRlKGNvbnRhaW5lckNvbnRleHQpLCAmY29sb3IpOwogICAgIG1fc2xpZGVyQ29sb3IgPSBjb2xv
cjsKLSAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfYmFja2dyb3VuZF9jb2xvcihjb250YWluZXJD
b250ZXh0LCBHVEtfU1RBVEVfRkxBR19TRUxFQ1RFRCwgJmNvbG9yKTsKKyAgICBndGtfc3R5bGVf
Y29udGV4dF9zZXRfc3RhdGUoY29udGFpbmVyQ29udGV4dCwgR1RLX1NUQVRFX0ZMQUdfU0VMRUNU
RUQpOworICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9iYWNrZ3JvdW5kX2NvbG9yKGNvbnRhaW5l
ckNvbnRleHQsIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdGF0ZShjb250YWluZXJDb250ZXh0KSwg
JmNvbG9yKTsKICAgICBtX3NsaWRlclRodW1iQ29sb3IgPSBjb2xvcjsKKworICAgIGd0a19zdHls
ZV9jb250ZXh0X3Jlc3RvcmUoY29udGFpbmVyQ29udGV4dCk7CiB9CiAKIHZvaWQgUmVuZGVyVGhl
bWVHdGs6OmluaXRNZWRpYUJ1dHRvbnMoKQpAQCAtNjEwLDcgKzYxNyw3IEBAIHN0YXRpYyB2b2lk
IHJlbmRlckJ1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4
dCwgY29uc3QgUmVuCiAKICAgICAgICAgaWYgKGludGVyaW9yRm9jdXMpIHsKICAgICAgICAgICAg
IEd0a0JvcmRlciBib3JkZXJXaWR0aDsKLSAgICAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9ib3JkZXIoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpLCAmYm9y
ZGVyV2lkdGgpOworICAgICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X2JvcmRlcihjb250
ZXh0LCBndGtfc3R5bGVfY29udGV4dF9nZXRfc3RhdGUoY29udGV4dCksICZib3JkZXJXaWR0aCk7
CiAKICAgICAgICAgICAgIGJ1dHRvblJlY3QgPSBJbnRSZWN0KAogICAgICAgICAgICAgICAgIGJ1
dHRvblJlY3QueCgpICsgYm9yZGVyV2lkdGgubGVmdCArIGZvY3VzUGFkLApAQCAtNjcyLDcgKzY3
OSw4IEBAIHN0YXRpYyB2b2lkIGdldENvbWJvQm94TWV0cmljcyhSZW5kZXJTdHlsZSYgc3R5bGUs
IEd0a0JvcmRlciYgYm9yZGVyLCBpbnQmIGZvY3VzCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRk
X2NsYXNzKGNvbnRleHQsIEdUS19TVFlMRV9DTEFTU19CVVRUT04pOwogICAgIGd0a19zdHlsZV9j
b250ZXh0X3NldF9kaXJlY3Rpb24oY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrVGV4dERpcmVjdGlv
bj4oZ3RrVGV4dERpcmVjdGlvbihzdHlsZS5kaXJlY3Rpb24oKSkpKTsKIAotICAgIGd0a19zdHls
ZV9jb250ZXh0X2dldF9ib3JkZXIoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4o
MCksICZib3JkZXIpOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBz
dGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPigwKSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0
X2JvcmRlcihjb250ZXh0LCBndGtfc3R5bGVfY29udGV4dF9nZXRfc3RhdGUoY29udGV4dCksICZi
b3JkZXIpOwogCiAgICAgZ2Jvb2xlYW4gaW50ZXJpb3JGb2N1czsKICAgICBnaW50IGZvY3VzV2lk
dGgsIGZvY3VzUGFkOwpAQCAtODM4LDkgKzg0Niw5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50
CiAgICAgICAgIGd0a19yZW5kZXJfZnJhbWUoc2VwYXJhdG9yU3R5bGVDb250ZXh0LCBjYWlyb0Nv
bnRleHQsIHNlcGFyYXRvclBvc2l0aW9uLngoKSwgc2VwYXJhdG9yUG9zaXRpb24ueSgpLCBzZXBh
cmF0b3JXaWR0aCwgaW5uZXJSZWN0LmhlaWdodCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBH
dGtCb3JkZXIgcGFkZGluZzsKLSAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3BhZGRpbmco
c2VwYXJhdG9yU3R5bGVDb250ZXh0LCBzdGF0ZSwgJnBhZGRpbmcpOworICAgICAgICBndGtfc3R5
bGVfY29udGV4dF9nZXRfcGFkZGluZyhzZXBhcmF0b3JTdHlsZUNvbnRleHQsIGd0a19zdHlsZV9j
b250ZXh0X2dldF9zdGF0ZShzZXBhcmF0b3JTdHlsZUNvbnRleHQpLCAmcGFkZGluZyk7CiAgICAg
ICAgIEd0a0JvcmRlciBib3JkZXI7Ci0gICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9ib3Jk
ZXIoc2VwYXJhdG9yU3R5bGVDb250ZXh0LCBzdGF0ZSwgJmJvcmRlcik7CisgICAgICAgIGd0a19z
dHlsZV9jb250ZXh0X2dldF9ib3JkZXIoc2VwYXJhdG9yU3R5bGVDb250ZXh0LCBndGtfc3R5bGVf
Y29udGV4dF9nZXRfc3RhdGUoc2VwYXJhdG9yU3R5bGVDb250ZXh0KSwgJmJvcmRlcik7CiAKICAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKQogICAgICAgICAgICAgc2Vw
YXJhdG9yUG9zaXRpb24ubW92ZSgtKHBhZGRpbmcubGVmdCArIGJvcmRlci5sZWZ0KSwgMCk7CkBA
IC0xMTg0LDEwICsxMTkyLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAKICAgICBndGtf
c3R5bGVfY29udGV4dF9zYXZlKGNvbnRleHQpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9j
bGFzcyhjb250ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfUFJPR1JFU1NCQVIpOwotCisgICAgZ3RrX3N0
eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+
KDApKTsKIAogICAgIEd0a0JvcmRlciBwYWRkaW5nOwotICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9wYWRkaW5nKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KDApLCAmcGFkZGlu
Zyk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3BhZGRpbmcoY29udGV4dCwgZ3RrX3N0eWxl
X2NvbnRleHRfZ2V0X3N0YXRlKGNvbnRleHQpLCAmcGFkZGluZyk7CiAgICAgSW50UmVjdCBwcm9n
cmVzc1JlY3QoCiAgICAgICAgIHJlY3QueCgpICsgcGFkZGluZy5sZWZ0LAogICAgICAgICByZWN0
LnkoKSArIHBhZGRpbmcudG9wLApAQCAtMTIxMSw3ICsxMjE5LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKIHN0YXRpYyBnaW50IHNwaW5CdXR0b25BcnJvd1NpemUoR3RrU3R5bGVDb250ZXh0
KiBjb250ZXh0KQogewogICAgIFBhbmdvRm9udERlc2NyaXB0aW9uKiBmb250RGVzY3JpcHRpb247
Ci0gICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0KGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRl
RmxhZ3M+KDApLCAiZm9udCIsICZmb250RGVzY3JpcHRpb24sIG51bGxwdHIpOworICAgIGd0a19z
dHlsZV9jb250ZXh0X2dldChjb250ZXh0LCBndGtfc3R5bGVfY29udGV4dF9nZXRfc3RhdGUoY29u
dGV4dCksICJmb250IiwgJmZvbnREZXNjcmlwdGlvbiwgbnVsbHB0cik7CiAgICAgZ2ludCBmb250
U2l6ZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X3NpemUoZm9udERlc2NyaXB0aW9uKTsK
ICAgICBnaW50IGFycm93U2l6ZSA9IHN0ZDo6bWF4KFBBTkdPX1BJWEVMUyhmb250U2l6ZSksIG1p
blNwaW5CdXR0b25BcnJvd1NpemUpOwogICAgIHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZnJlZShm
b250RGVzY3JpcHRpb24pOwpAQCAtMTIyNCw3ICsxMjMyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiBzdHkKICAgICBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQgPSBnZXRTdHlsZUNvbnRleHQoR1RL
X1RZUEVfU1BJTl9CVVRUT04pOwogCiAgICAgR3RrQm9yZGVyIHBhZGRpbmc7Ci0gICAgZ3RrX3N0
eWxlX2NvbnRleHRfZ2V0X3BhZGRpbmcoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFn
cz4oMCksICZwYWRkaW5nKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfcGFkZGluZyhjb250
ZXh0LCBndGtfc3R5bGVfY29udGV4dF9nZXRfc3RhdGUoY29udGV4dCksICZwYWRkaW5nKTsKIAog
ICAgIGludCB3aWR0aCA9IHNwaW5CdXR0b25BcnJvd1NpemUoY29udGV4dCkgKyBwYWRkaW5nLmxl
ZnQgKyBwYWRkaW5nLnJpZ2h0OwogICAgIHN0eWxlLnNldFdpZHRoKExlbmd0aCh3aWR0aCwgRml4
ZWQpKTsKQEAgLTEzNDcsOSArMTM1NSw5IEBAIHN0YXRpYyBDb2xvciBzdHlsZUNvbG9yKEdUeXBl
IHdpZGdldFR5cGUsIEd0a1N0YXRlRmxhZ3Mgc3RhdGUsIFN0eWxlQ29sb3JUeXBlIGNvCiAKICAg
ICBHZGtSR0JBIGdka1JHQkFDb2xvcjsKICAgICBpZiAoY29sb3JUeXBlID09IFN0eWxlQ29sb3JC
YWNrZ3JvdW5kKQotICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfYmFja2dyb3VuZF9jb2xv
cihjb250ZXh0LCBzdGF0ZSwgJmdka1JHQkFDb2xvcik7CisgICAgICAgIGd0a19zdHlsZV9jb250
ZXh0X2dldF9iYWNrZ3JvdW5kX2NvbG9yKGNvbnRleHQsIGd0a19zdHlsZV9jb250ZXh0X2dldF9z
dGF0ZShjb250ZXh0KSwgJmdka1JHQkFDb2xvcik7CiAgICAgZWxzZQotICAgICAgICBndGtfc3R5
bGVfY29udGV4dF9nZXRfY29sb3IoY29udGV4dCwgc3RhdGUsICZnZGtSR0JBQ29sb3IpOworICAg
ICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfY29sb3IoY29udGV4dCwgZ3RrX3N0eWxlX2NvbnRl
eHRfZ2V0X3N0YXRlKGNvbnRleHQpLCAmZ2RrUkdCQUNvbG9yKTsKICAgICByZXR1cm4gZ2RrUkdC
QUNvbG9yOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>