<?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>151524</bug_id>
          
          <creation_ts>2015-11-20 15:56:52 -0800</creation_ts>
          <short_desc>[GTK] Off-by-one error in getStyleContext()</short_desc>
          <delta_ts>2015-11-21 09:00:10 -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>
          
          
          <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>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143871</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-20 15:56:52 -0800</bug_when>
    <thetext>In getStyleContext() in RenderThemeGtk.cpp:

GtkWidgetPath* path = gtk_widget_path_new();
gtk_widget_path_append_type(path, widgetType);
// ...
gtk_widget_path_iter_add_class(path, 0, GTK_STYLE_CLASS_BUTTON);
gtk_widget_path_iter_add_class(path, 1, &quot;text-button&quot;);

Only one widget type was appended to the widget path, so the maximum valid index is 0. This code means to add both style classes to the first widget type in the widget path.

This caused no bug in practice, because when the index is invalid, gtk_widget_path_iter_add_class() automatically changes the index to the last valid position in the widget path -- in this case, 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143875</commentid>
    <comment_count>1</comment_count>
      <attachid>266010</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-20 15:59:51 -0800</bug_when>
    <thetext>Created attachment 266010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143942</commentid>
    <comment_count>2</comment_count>
      <attachid>266010</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-21 01:44:21 -0800</bug_when>
    <thetext>Comment on attachment 266010
Patch

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

Good catch, thanks!

&gt; Source/WebCore/rendering/RenderThemeGtk.cpp:178
&gt; -        gtk_widget_path_iter_add_class(path, 1, &quot;text-button&quot;);
&gt; +        gtk_widget_path_iter_add_class(path, 0, &quot;text-button&quot;);

I guess I understood this as the position of the class, rather than the widget at the given position. Since we always add one widget only, maybe it would be less confusing to use -1 in all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143947</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-21 08:14:38 -0800</bug_when>
    <thetext>Now that I understand how the API works, using 0 seems better to me; I would use -1 when I don&apos;t know how long the widget path is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143952</commentid>
    <comment_count>4</comment_count>
      <attachid>266010</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-21 09:00:06 -0800</bug_when>
    <thetext>Comment on attachment 266010
Patch

Clearing flags on attachment: 266010

Committed r192724: &lt;http://trac.webkit.org/changeset/192724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143953</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-21 09:00:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266010</attachid>
            <date>2015-11-20 15:59:51 -0800</date>
            <delta_ts>2015-11-21 09:00:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151524-20151120175938.patch</filename>
            <type>text/plain</type>
            <size>2400</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODExOWFkYTlmZjE1MDA4
NWM4ZDc2YzhjM2MyYWY3MzNlNWVmODllMy4uODQwYjdlNTQwZGM0ZTI3ZDdlNmZlOWM3MDJhODJj
YTk5YjEzNTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTExLTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBP
ZmYtYnktb25lIGVycm9yIGluIGdldFN0eWxlQ29udGV4dCgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHdGtXaWRnZXRQYXRoKiBwYXRoID0gZ3RrX3dp
ZGdldF9wYXRoX25ldygpOworICAgICAgICBndGtfd2lkZ2V0X3BhdGhfYXBwZW5kX3R5cGUocGF0
aCwgd2lkZ2V0VHlwZSk7CisgICAgICAgIC8vIC4uLgorICAgICAgICBndGtfd2lkZ2V0X3BhdGhf
aXRlcl9hZGRfY2xhc3MocGF0aCwgMCwgR1RLX1NUWUxFX0NMQVNTX0JVVFRPTik7CisgICAgICAg
IGd0a193aWRnZXRfcGF0aF9pdGVyX2FkZF9jbGFzcyhwYXRoLCAxLCAidGV4dC1idXR0b24iKTsK
KworICAgICAgICBPbmx5IG9uZSB3aWRnZXQgdHlwZSB3YXMgYXBwZW5kZWQgdG8gdGhlIHdpZGdl
dCBwYXRoLCBzbyB0aGUgbWF4aW11bSB2YWxpZCBpbmRleCBpcyAwLiBUaGlzCisgICAgICAgIGNv
ZGUgbWVhbnMgdG8gYWRkIGJvdGggc3R5bGUgY2xhc3NlcyB0byB0aGUgZmlyc3Qgd2lkZ2V0IHR5
cGUgaW4gdGhlIHdpZGdldCBwYXRoLCBzbyB0aGUKKyAgICAgICAgc2Vjb25kIGNhbGwgc2hvdWxk
IHVzZSBpbmRleCAwIHJhdGhlciB0aGFuIGluZGV4IDEuCisKKyAgICAgICAgVGhpcyBjYXVzZWQg
bm8gYnVnIGluIHByYWN0aWNlLCBiZWNhdXNlIHdoZW4gdGhlIGluZGV4IGlzIGludmFsaWQsCisg
ICAgICAgIGd0a193aWRnZXRfcGF0aF9pdGVyX2FkZF9jbGFzcygpIGF1dG9tYXRpY2FsbHkgY2hh
bmdlcyB0aGUgaW5kZXggdG8gdGhlIGxhc3QgdmFsaWQgcG9zaXRpb24KKyAgICAgICAgaW4gdGhl
IHdpZGdldCBwYXRoIC0tIGluIHRoaXMgY2FzZSwgMC4gVGhpcyBpcyByb3V0aW5lbHkgZG9uZSB3
aXRoIC0xIGFzIGEgY29udmVudGlvbiBmb3IKKyAgICAgICAgc3BlY2lmeWluZyB0aGUgbGFzdCBw
b3NpdGlvbiBpbiB0aGUgd2lkZ2V0IHBhdGguCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3R5bGVDb250ZXh0KToKKwogMjAx
NS0xMS0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAg
ICAgICAgIFVzZSBIVFRQSGVhZGVyTmFtZSBhcyBtdWNoIGFzIHBvc3NpYmxlIGluIFhNTEh0dHBS
ZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRl
eCA0YjYyZTJkYTYxYjIwOGQ3MGQ5MzViMzFhZGIzZGVmMjkzMGJjZWU3Li4xYWZiMTE0OTI1NTY4
OGM2ODBhYWY4NWZjZjA0NGQ3MDI4NjBiYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgR3RrU3R5bGVD
b250ZXh0KiBnZXRTdHlsZUNvbnRleHQoR1R5cGUgd2lkZ2V0VHlwZSkKICAgICAgICAgZ3RrX3dp
ZGdldF9wYXRoX2l0ZXJfYWRkX2NsYXNzKHBhdGgsIDAsICJhcnJvdyIpOwogICAgIGVsc2UgaWYg
KHdpZGdldFR5cGUgPT0gR1RLX1RZUEVfQlVUVE9OKSB7CiAgICAgICAgIGd0a193aWRnZXRfcGF0
aF9pdGVyX2FkZF9jbGFzcyhwYXRoLCAwLCBHVEtfU1RZTEVfQ0xBU1NfQlVUVE9OKTsKLSAgICAg
ICAgZ3RrX3dpZGdldF9wYXRoX2l0ZXJfYWRkX2NsYXNzKHBhdGgsIDEsICJ0ZXh0LWJ1dHRvbiIp
OworICAgICAgICBndGtfd2lkZ2V0X3BhdGhfaXRlcl9hZGRfY2xhc3MocGF0aCwgMCwgInRleHQt
YnV0dG9uIik7CiAgICAgfSBlbHNlIGlmICh3aWRnZXRUeXBlID09IEdUS19UWVBFX1NDQUxFKQog
ICAgICAgICBndGtfd2lkZ2V0X3BhdGhfaXRlcl9hZGRfY2xhc3MocGF0aCwgMCwgR1RLX1NUWUxF
X0NMQVNTX1NDQUxFKTsKICAgICBlbHNlIGlmICh3aWRnZXRUeXBlID09IEdUS19UWVBFX1NFUEFS
QVRPUikK
</data>

          </attachment>
      

    </bug>

</bugzilla>