<?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>94202</bug_id>
          
          <creation_ts>2012-08-16 00:54:57 -0700</creation_ts>
          <short_desc>[GTK] Bad utf8 data is being passed to enchant_dict_check</short_desc>
          <delta_ts>2012-08-16 10:33:49 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696863</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-08-16 00:54:57 -0700</bug_when>
    <thetext>I observed today the following error in the bots, when running certain layout tests like the following one:

  23:47:55.622 4977 worker/22 editing/selection/move-by-word-visually-single-space-inline-element.html output stderr lines:
  23:47:55.622 4977   enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)&apos; failed
  23:47:55.622 4977   enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)&apos; failed
  23:47:55.623 4977   enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)&apos; failed
  23:47:55.623 4977   enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)&apos; failed
  [...] &lt;&lt; repeats some more times &gt;&gt;

So, I briefly investigated the issue and it seems the problem is easily fixable by doing this:

  --- a/Source/WebCore/platform/text/gtk/TextCheckerEnchant.cpp
  +++ b/Source/WebCore/platform/text/gtk/TextCheckerEnchant.cpp
  @@ -115,7 +115,7 @@ void TextCheckerEnchant::checkSpellingOfString(const String&amp; string, int&amp; misspe
               g_utf8_strncpy(word.get(), cstart, wordLength);
   
               for (; dictIter != m_enchantDictionaries.end(); ++dictIter) {
  -                if (enchant_dict_check(*dictIter, word.get(), wordLength)) {
  +                if (enchant_dict_check(*dictIter, word.get(), bytes)) {
                       misspellingLocation = start;
                       misspellingLength = wordLength;
                   } else {
  
The explanation is that the &apos;length&apos; parameter in enchant_dict_check accepts a number of bytes and not the number of utf8 characters, so it will fail in cases like this:

  word: דעפ =&gt; total characters: 3 / total bytes: 6

Thus, of course a call to enchant_dict_check with 3 as length will fail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696869</commentid>
    <comment_count>1</comment_count>
      <attachid>158741</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-08-16 00:59:10 -0700</bug_when>
    <thetext>Created attachment 158741
Patch proposal

Here comes the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697248</commentid>
    <comment_count>2</comment_count>
      <attachid>158741</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-08-16 10:12:48 -0700</bug_when>
    <thetext>Comment on attachment 158741
Patch proposal

I am lazy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697261</commentid>
    <comment_count>3</comment_count>
      <attachid>158741</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 10:33:46 -0700</bug_when>
    <thetext>Comment on attachment 158741
Patch proposal

Clearing flags on attachment: 158741

Committed r125791: &lt;http://trac.webkit.org/changeset/125791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697262</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 10:33:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158741</attachid>
            <date>2012-08-16 00:59:10 -0700</date>
            <delta_ts>2012-08-16 10:33:46 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-08-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>2482</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA2MTkxZTk5MzljMzZhODllYzM0Yjk0ZWRjMjBjY2EyYjU2OWU3ZTg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE2IEF1ZyAyMDEyIDA5OjU3OjIwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wOC0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEJhZCB1dGY4IGRhdGEgaXMgYmVpbmcgcGFzc2VkIHRvIGVuY2hhbnRf
ZGljdF9jaGVjawogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDIwMgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgUGFz
cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluc3RlYWQgb2YgdGhlIG51bWJlciBvZiBVVEY4IGNoYXJh
Y3RlcnMKICAgICAgICB3aGVuIGNhbGxpbmcgZW5jaGFudF9kaWN0X2NoZWNrLgoKICAgICAgICAq
IHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2VyRW5jaGFudC5jcHA6CiAgICAgICAgKFRleHRD
aGVja2VyRW5jaGFudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKTogVXNlICdieXRlcycgaW5zdGVh
ZAogICAgICAgIG9mICd3b3JkTGVuZ3RoJy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKysrKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2VyRW5jaGFudC5jcHAgfCAgMiAr
LQogMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVlYTEwZGMuLjhmYTJkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0wOC0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS10gQmFkIHV0ZjggZGF0YSBpcyBiZWluZyBwYXNzZWQgdG8gZW5jaGFudF9k
aWN0X2NoZWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3MgdGhlIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgVVRGOCBj
aGFyYWN0ZXJzCisgICAgICAgIHdoZW4gY2FsbGluZyBlbmNoYW50X2RpY3RfY2hlY2suCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwOgorICAgICAg
ICAoVGV4dENoZWNrZXJFbmNoYW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcpOiBVc2UgJ2J5dGVz
JyBpbnN0ZWFkCisgICAgICAgIG9mICd3b3JkTGVuZ3RoJy4KKwogMjAxMi0wOC0xMyAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50YXRpb24gb2YgYXRrX2VkaXRhYmxlX3RleHRfaW5zZXJ0X3RleHQgaWdub3JlcyAnbGVu
Z3RoJyBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Z3RrL1RleHRDaGVja2VyRW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2d0ay9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4IGFkNjY4YWIuLmYzZjYwZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2VyRW5jaGFu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENoZWNrZXJF
bmNoYW50LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgVGV4dENoZWNrZXJFbmNoYW50Ojpj
aGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbWlzc3BlCiAg
ICAgICAgICAgICBnX3V0Zjhfc3RybmNweSh3b3JkLmdldCgpLCBjc3RhcnQsIHdvcmRMZW5ndGgp
OwogCiAgICAgICAgICAgICBmb3IgKDsgZGljdEl0ZXIgIT0gbV9lbmNoYW50RGljdGlvbmFyaWVz
LmVuZCgpOyArK2RpY3RJdGVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVuY2hhbnRfZGljdF9j
aGVjaygqZGljdEl0ZXIsIHdvcmQuZ2V0KCksIHdvcmRMZW5ndGgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVuY2hhbnRfZGljdF9jaGVjaygqZGljdEl0ZXIsIHdvcmQuZ2V0KCksIGJ5dGVzKSkg
ewogICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGluZ0xvY2F0aW9uID0gc3RhcnQ7CiAgICAg
ICAgICAgICAgICAgICAgIG1pc3NwZWxsaW5nTGVuZ3RoID0gd29yZExlbmd0aDsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotLSAKMS43LjExLjIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>