<?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>57307</bug_id>
          
          <creation_ts>2011-03-29 00:43:22 -0700</creation_ts>
          <short_desc>[GTK] Fix leaked pointer in FontGtk.cpp</short_desc>
          <delta_ts>2011-04-02 12:22:38 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>375087</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-29 00:43:22 -0700</bug_when>
    <thetext>In convertUniCharToUTF8,
utf8 got allocated memory via utf16_to_utf8(characters, length, utf8, new_length);

But, It looks not released.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375098</commentid>
    <comment_count>1</comment_count>
      <attachid>87280</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-29 01:04:30 -0700</bug_when>
    <thetext>Created attachment 87280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375690</commentid>
    <comment_count>2</comment_count>
      <attachid>87280</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 13:05:33 -0700</bug_when>
    <thetext>Comment on attachment 87280
Patch

Can&apos;t we use OwnGPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375704</commentid>
    <comment_count>3</comment_count>
      <attachid>87280</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-29 13:22:34 -0700</bug_when>
    <thetext>Comment on attachment 87280
Patch

Great catch! I think we can use this opportunity to clean this code up a bit. We should probably make utf16_to_utf8 return a char* instead of taking a char*&amp; (which is bad form, IMO). Then in the caller we should immediately place the return value in a GOwnPtr&lt;gchar&gt; and remove the calls to g_free. This will prevent any mistakes in the future as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376000</commentid>
    <comment_count>4</comment_count>
      <attachid>87452</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-29 19:29:11 -0700</bug_when>
    <thetext>Created attachment 87452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376002</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-29 19:33:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 87280 [details])
&gt; Great catch! I think we can use this opportunity to clean this code up a bit. We should probably make utf16_to_utf8 return a char* instead of taking a char*&amp; (which is bad form, IMO). Then in the caller we should immediately place the return value in a GOwnPtr&lt;gchar&gt; and remove the calls to g_free. This will prevent any mistakes in the future as well.

I update patch as mentioned with refactoring utf16_to_utf8(because of fixing indentation and coding style).

And also, can we remove &apos;from&apos; variable in convertUniCharToUTF8?
this value will be passed 0 always.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376728</commentid>
    <comment_count>6</comment_count>
      <attachid>87452</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-30 15:21:34 -0700</bug_when>
    <thetext>Comment on attachment 87452
Patch

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

This code probably needs quite a bit more cleanup in the future, but this is a good incremental change. Please make the following changes before landing.

&gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:92
&gt;      for (i = 0; i &lt; aLength; i++) {

Moving the declaration of i here would be more idiomatic in C++.

&gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:135
&gt; +        g_free((gpointer)aText);

You do not need to cast here.

&gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:142
&gt;      gint new_length = 0;

new_length --&gt; newLength;

&gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:154
&gt;      if (from &gt; 0) {
&gt;          // discard the first &apos;from&apos; characters
&gt;          // FIXME: we should do this before the conversion probably
&gt; -        gchar* str_left = g_utf8_offset_to_pointer(utf8, from);
&gt; -        gchar* tmp = g_strdup(str_left);
&gt; -        g_free(utf8);
&gt; -        utf8 = tmp;
&gt; +        gchar* strLeft = g_utf8_offset_to_pointer(utf8Text.get(), from);
&gt; +        utf8Text.set(g_strdup(strLeft));
&gt;      }
&gt;  
&gt; -    gchar* pos = utf8;
&gt; +    gchar* pos = utf8Text.get();

I think you can easily optimize this section by doing something like:

gchar* pos = utf8Text.get();
if (from &gt; 0) {
    // FIXME: we should do this before the conversion probably
    pos = g_utf8_offset_to_pointer(pos, from);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376835</commentid>
    <comment_count>7</comment_count>
      <attachid>87650</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-30 18:09:51 -0700</bug_when>
    <thetext>Created attachment 87650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376837</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-03-30 18:14:21 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 87452 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87452&amp;action=review
&gt; 
&gt; This code probably needs quite a bit more cleanup in the future, but this is a good incremental change. Please make the following changes before landing.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:92
&gt; &gt;      for (i = 0; i &lt; aLength; i++) {
&gt; 
&gt; Moving the declaration of i here would be more idiomatic in C++.
Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:135
&gt; &gt; +        g_free((gpointer)aText);
&gt; 
&gt; You do not need to cast here.

Because aText is const variable, I couldn&apos;t remove casting.
Instead, I removed g_free itself using GOwnPtr.
 
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:142
&gt; &gt;      gint new_length = 0;
&gt; 
&gt; new_length --&gt; newLength;
&gt; 
Done.

&gt; &gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:154
&gt; &gt;      if (from &gt; 0) {
&gt; &gt;          // discard the first &apos;from&apos; characters
&gt; &gt;          // FIXME: we should do this before the conversion probably
&gt; &gt; -        gchar* str_left = g_utf8_offset_to_pointer(utf8, from);
&gt; &gt; -        gchar* tmp = g_strdup(str_left);
&gt; &gt; -        g_free(utf8);
&gt; &gt; -        utf8 = tmp;
&gt; &gt; +        gchar* strLeft = g_utf8_offset_to_pointer(utf8Text.get(), from);
&gt; &gt; +        utf8Text.set(g_strdup(strLeft));
&gt; &gt;      }
&gt; &gt;  
&gt; &gt; -    gchar* pos = utf8;
&gt; &gt; +    gchar* pos = utf8Text.get();
&gt; 
&gt; I think you can easily optimize this section by doing something like:
&gt; 
&gt; gchar* pos = utf8Text.get();
&gt; if (from &gt; 0) {
&gt;     // FIXME: we should do this before the conversion probably
&gt;     pos = g_utf8_offset_to_pointer(pos, from);
&gt; }
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376910</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 20:44:54 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 87650:

animations/dynamic-stylesheet-loading.html bug 52669 (author: cmarrin@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376911</commentid>
    <comment_count>10</comment_count>
      <attachid>87650</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 20:47:11 -0700</bug_when>
    <thetext>Comment on attachment 87650
Patch

Clearing flags on attachment: 87650

Committed r82541: &lt;http://trac.webkit.org/changeset/82541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376912</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 20:47:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376933</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 21:29:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82541 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378323</commentid>
    <comment_count>13</comment_count>
      <attachid>87963</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-04-01 21:40:06 -0700</bug_when>
    <thetext>Created attachment 87963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378325</commentid>
    <comment_count>14</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-04-01 21:43:54 -0700</bug_when>
    <thetext>I recreate patch because it was reverted with other patchs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378409</commentid>
    <comment_count>15</comment_count>
      <attachid>87963</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-02 11:57:09 -0700</bug_when>
    <thetext>Comment on attachment 87963
Patch

Sorry. This patch should not have been rolled out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378415</commentid>
    <comment_count>16</comment_count>
      <attachid>87963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-02 12:22:32 -0700</bug_when>
    <thetext>Comment on attachment 87963
Patch

Clearing flags on attachment: 87963

Committed r82772: &lt;http://trac.webkit.org/changeset/82772&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378416</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-02 12:22:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87280</attachid>
            <date>2011-03-29 01:04:30 -0700</date>
            <delta_ts>2011-03-29 19:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57307-20110329170427.patch</filename>
            <type>text/plain</type>
            <size>1082</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMjkgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEZpeCBsZWFrZWQgcG9pbnRlciBpbiBGb250R3Rr
LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcz
MDcKKworICAgICAgICBObyBmdW5jdGlvbmFsaXR5IGNoYW5nZS4gTm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFVuaUNoYXJUb1VURjgpOgorCiAyMDExLTAzLTI4ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByODIxOTguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCShyZXZpc2lvbiA4MjIwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDYgKzE2Niw3IEBAIHN0YXRpYyBnY2hhciogY29udmVydFVuaUNoYXJUb1VURjgoY29uc3QKICAg
ICAgICAgcG9zICs9IHN0YXJ0OwogICAgICAgICBsZW4gLT0gc3RhcnQ7CiAgICAgfQorICAgIGdf
ZnJlZSh1dGY4KTsKICAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShyZXQsIEZBTFNFKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87452</attachid>
            <date>2011-03-29 19:29:11 -0700</date>
            <delta_ts>2011-03-30 18:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57307-20110330112909.patch</filename>
            <type>text/plain</type>
            <size>5025</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMzg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMjkgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEZpeCBsZWFrZWQgcG9pbnRlciBpbiBGb250R3Rr
LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcz
MDcKKworICAgICAgICBGaXggYSBtZW1vcnkgbGVhay4KKworICAgICAgICBObyBuZXcgZnVuY3Rp
b25hbGl0eSwgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRmMTZUb1V0ZjgpOiBSZW5hbWUg
dXRmMTZfdG9fdXRmOCBhbmQgZml4IGluZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFVuaUNoYXJUb1VURjgpOgorCiAyMDExLTAzLTI5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3Rr
LmNwcAkocmV2aXNpb24gODIzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvRm9udEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2lu
Y2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgorI2lu
Y2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC04Myw3
NSArODQsNzQgQEAgSW50UmVjdCBnZXRQYW5nb1JlZ2lvbkV4dGVudHMoUGFuZ29SZWdpbwogI2Rl
ZmluZSBJU19ISUdIX1NVUlJPR0FURSh1KSAgKChVQ2hhcikodSkgPj0gKFVDaGFyKTB4ZDgwMCAm
JiAoVUNoYXIpKHUpIDw9IChVQ2hhcikweGRiZmYpCiAjZGVmaW5lIElTX0xPV19TVVJST0dBVEUo
dSkgICgoVUNoYXIpKHUpID49IChVQ2hhcikweGRjMDAgJiYgKFVDaGFyKSh1KSA8PSAoVUNoYXIp
MHhkZmZmKQogCi1zdGF0aWMgdm9pZCB1dGYxNl90b191dGY4KGNvbnN0IFVDaGFyKiBhVGV4dCwg
Z2ludCBhTGVuZ3RoLCBjaGFyKiAmdGV4dCwgZ2ludCAmbGVuZ3RoKQorc3RhdGljIGdjaGFyKiB1
dGYxNlRvVXRmOChjb25zdCBVQ2hhciogYVRleHQsIGdpbnQgYUxlbmd0aCwgZ2ludCAmbGVuZ3Ro
KQogewotICBnYm9vbGVhbiBuZWVkX2NvcHkgPSBGQUxTRTsKLSAgaW50IGk7CisgICAgZ2Jvb2xl
YW4gbmVlZENvcHkgPSBGQUxTRTsKKyAgICBpbnQgaTsKIAotICBmb3IgKGkgPSAwOyBpIDwgYUxl
bmd0aDsgaSsrKSB7Ci0gICAgaWYgKCFhVGV4dFtpXSB8fCBJU19MT1dfU1VSUk9HQVRFKGFUZXh0
W2ldKSkgewotICAgICAgbmVlZF9jb3B5ID0gVFJVRTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBlbHNlIGlmIChJU19ISUdIX1NVUlJPR0FURShhVGV4dFtpXSkpIHsKLSAgICAgIGlmIChpIDwg
YUxlbmd0aCAtIDEgJiYgSVNfTE9XX1NVUlJPR0FURShhVGV4dFtpKzFdKSkKLSAgICAgICAgaSsr
OwotICAgICAgZWxzZSB7Ci0gICAgICAgIG5lZWRfY29weSA9IFRSVUU7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGlmIChuZWVkX2NvcHkpIHsKLQotICAgIC8qIFBh
bmdvIGRvZXNuJ3QgY29ycmVjdGx5IGhhbmRsZSBudWxzLiAgV2UgY29udmVydCB0aGVtIHRvIDB4
ZmYuICovCi0gICAgLyogQWxzbyAidmFsaWRhdGUiIFVURi0xNiB0ZXh0IHRvIG1ha2Ugc3VyZSBj
b252ZXJzaW9uIGRvZXNuJ3QgZmFpbC4gKi8KLQotICAgIFVDaGFyKiBwID0gKFVDaGFyKilnX21l
bWR1cChhVGV4dCwgYUxlbmd0aCAqIHNpemVvZihhVGV4dFswXSkpOwotCi0gICAgLyogZG9uJ3Qg
bmVlZCB0byByZXNldCBpICovCiAgICAgZm9yIChpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykgewot
ICAgICAgaWYgKCFwW2ldIHx8IElTX0xPV19TVVJST0dBVEUocFtpXSkpCi0gICAgICAgIHBbaV0g
PSAweEZGRkQ7Ci0gICAgICBlbHNlIGlmIChJU19ISUdIX1NVUlJPR0FURShwW2ldKSkgewotICAg
ICAgICBpZiAoaSA8IGFMZW5ndGggLSAxICYmIElTX0xPV19TVVJST0dBVEUoYVRleHRbaSsxXSkp
Ci0gICAgICAgICAgaSsrOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcFtpXSA9IDB4RkZGRDsK
LSAgICAgIH0KLSAgICB9Ci0KLSAgICBhVGV4dCA9IHA7Ci0gIH0KLQotICBnbG9uZyBpdGVtc193
cml0dGVuOwotICB0ZXh0ID0gZ191dGYxNl90b191dGY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Z3VuaWNoYXIyKj4oYVRleHQpLCBhTGVuZ3RoLCBOVUxMLCAmaXRlbXNfd3JpdHRlbiwgTlVMTCk7
Ci0gIGxlbmd0aCA9IGl0ZW1zX3dyaXR0ZW47CisgICAgICAgIGlmICghYVRleHRbaV0gfHwgSVNf
TE9XX1NVUlJPR0FURShhVGV4dFtpXSkpIHsKKyAgICAgICAgICAgIG5lZWRDb3B5ID0gVFJVRTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IAorCisgICAgICAgIGlmIChJU19ISUdIX1NV
UlJPR0FURShhVGV4dFtpXSkpIHsKKyAgICAgICAgICAgIGlmIChpIDwgYUxlbmd0aCAtIDEgJiYg
SVNfTE9XX1NVUlJPR0FURShhVGV4dFtpKzFdKSkKKyAgICAgICAgICAgICAgICBpKys7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZWVkQ29weSA9IFRSVUU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobmVlZENvcHkpIHsKKyAgICAgICAgLyogUGFuZ28gZG9lc24ndCBjb3JyZWN0bHkgaGFuZGxl
IG51bHMuICBXZSBjb252ZXJ0IHRoZW0gdG8gMHhmZi4gKi8KKyAgICAgICAgLyogQWxzbyAidmFs
aWRhdGUiIFVURi0xNiB0ZXh0IHRvIG1ha2Ugc3VyZSBjb252ZXJzaW9uIGRvZXNuJ3QgZmFpbC4g
Ki8KKworICAgICAgICBVQ2hhciogcCA9IChVQ2hhciopZ19tZW1kdXAoYVRleHQsIGFMZW5ndGgg
KiBzaXplb2YoYVRleHRbMF0pKTsKKworICAgICAgICAvKiBkb24ndCBuZWVkIHRvIHJlc2V0IGkg
Ki8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
aWYgKCFwW2ldIHx8IElTX0xPV19TVVJST0dBVEUocFtpXSkpCisgICAgICAgICAgICAgICAgcFtp
XSA9IDB4RkZGRDsKKyAgICAgICAgICAgIGVsc2UgaWYgKElTX0hJR0hfU1VSUk9HQVRFKHBbaV0p
KSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBhTGVuZ3RoIC0gMSAmJiBJU19MT1dfU1VSUk9H
QVRFKGFUZXh0W2krMV0pKQorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwW2ldID0gMHhGRkZEOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgYVRleHQgPSBwOworICAgIH0KKworICAgIGdjaGFyKiB1
dGY4VGV4dDsKKyAgICBnbG9uZyBpdGVtc1dyaXR0ZW47CisgICAgdXRmOFRleHQgPSBnX3V0ZjE2
X3RvX3V0ZjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBndW5pY2hhcjIqPihhVGV4dCksIGFMZW5n
dGgsIDAsICZpdGVtc1dyaXR0ZW4sIDApOworICAgIGxlbmd0aCA9IGl0ZW1zV3JpdHRlbjsKIAot
ICBpZiAobmVlZF9jb3B5KQotICAgIGdfZnJlZSgoZ3BvaW50ZXIpYVRleHQpOworICAgIGlmIChu
ZWVkQ29weSkKKyAgICAgICAgZ19mcmVlKChncG9pbnRlcilhVGV4dCk7CiAKKyAgICByZXR1cm4g
dXRmOFRleHQ7CiB9CiAKIHN0YXRpYyBnY2hhciogY29udmVydFVuaUNoYXJUb1VURjgoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIGdpbnQgbGVuZ3RoLCBpbnQgZnJvbSwgaW50IHRvKQogewotICAg
IGdjaGFyKiB1dGY4ID0gMDsKICAgICBnaW50IG5ld19sZW5ndGggPSAwOwotICAgIHV0ZjE2X3Rv
X3V0ZjgoY2hhcmFjdGVycywgbGVuZ3RoLCB1dGY4LCBuZXdfbGVuZ3RoKTsKLSAgICBpZiAoIXV0
ZjgpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIEdPd25QdHI8Z2NoYXI+IHV0ZjhUZXh0KHV0
ZjE2VG9VdGY4KGNoYXJhY3RlcnMsIGxlbmd0aCwgbmV3X2xlbmd0aCkpOworICAgIGlmICghdXRm
OFRleHQpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGZyb20gPiAwKSB7CiAgICAgICAg
IC8vIGRpc2NhcmQgdGhlIGZpcnN0ICdmcm9tJyBjaGFyYWN0ZXJzCiAgICAgICAgIC8vIEZJWE1F
OiB3ZSBzaG91bGQgZG8gdGhpcyBiZWZvcmUgdGhlIGNvbnZlcnNpb24gcHJvYmFibHkKLSAgICAg
ICAgZ2NoYXIqIHN0cl9sZWZ0ID0gZ191dGY4X29mZnNldF90b19wb2ludGVyKHV0ZjgsIGZyb20p
OwotICAgICAgICBnY2hhciogdG1wID0gZ19zdHJkdXAoc3RyX2xlZnQpOwotICAgICAgICBnX2Zy
ZWUodXRmOCk7Ci0gICAgICAgIHV0ZjggPSB0bXA7CisgICAgICAgIGdjaGFyKiBzdHJMZWZ0ID0g
Z191dGY4X29mZnNldF90b19wb2ludGVyKHV0ZjhUZXh0LmdldCgpLCBmcm9tKTsKKyAgICAgICAg
dXRmOFRleHQuc2V0KGdfc3RyZHVwKHN0ckxlZnQpKTsKICAgICB9CiAKLSAgICBnY2hhciogcG9z
ID0gdXRmODsKKyAgICBnY2hhciogcG9zID0gdXRmOFRleHQuZ2V0KCk7CiAgICAgZ2ludCBsZW4g
PSBzdHJsZW4ocG9zKTsKICAgICBHU3RyaW5nKiByZXQgPSBnX3N0cmluZ19uZXdfbGVuKE5VTEws
IGxlbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87650</attachid>
            <date>2011-03-30 18:09:51 -0700</date>
            <delta_ts>2011-04-01 21:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57307-20110331100949.patch</filename>
            <type>text/plain</type>
            <size>5172</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMzAgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEZpeCBsZWFrZWQgcG9pbnRlciBpbiBGb250R3Rr
LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcz
MDcKKworICAgICAgICBGaXggYSBtZW1vcnkgbGVhay4KKworICAgICAgICBObyBuZXcgZnVuY3Rp
b25hbGl0eSwgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRmMTZUb1V0ZjgpOiBSZW5hbWUg
dXRmMTZfdG9fdXRmOCBhbmQgZml4IGluZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFVuaUNoYXJUb1VURjgpOgorCiAyMDExLTAzLTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVp
emFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3Bw
CShyZXZpc2lvbiA4MjUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsMTAgQEAKIAogI2luY2x1
ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5o
IgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtODQsNzUgKzg1
LDcxIEBAIEludFJlY3QgZ2V0UGFuZ29SZWdpb25FeHRlbnRzKFBhbmdvUmVnaW8KICNkZWZpbmUg
SVNfSElHSF9TVVJST0dBVEUodSkgICgoVUNoYXIpKHUpID49IChVQ2hhcikweGQ4MDAgJiYgKFVD
aGFyKSh1KSA8PSAoVUNoYXIpMHhkYmZmKQogI2RlZmluZSBJU19MT1dfU1VSUk9HQVRFKHUpICAo
KFVDaGFyKSh1KSA+PSAoVUNoYXIpMHhkYzAwICYmIChVQ2hhcikodSkgPD0gKFVDaGFyKTB4ZGZm
ZikKIAotc3RhdGljIHZvaWQgdXRmMTZfdG9fdXRmOChjb25zdCBVQ2hhciogYVRleHQsIGdpbnQg
YUxlbmd0aCwgY2hhciogJnRleHQsIGdpbnQgJmxlbmd0aCkKK3N0YXRpYyBnY2hhciogdXRmMTZU
b1V0ZjgoY29uc3QgVUNoYXIqIGFUZXh0LCBnaW50IGFMZW5ndGgsIGdpbnQgJmxlbmd0aCkKIHsK
LSAgZ2Jvb2xlYW4gbmVlZF9jb3B5ID0gRkFMU0U7Ci0gIGludCBpOworICAgIGdib29sZWFuIG5l
ZWRDb3B5ID0gRkFMU0U7CiAKLSAgZm9yIChpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykgewotICAg
IGlmICghYVRleHRbaV0gfHwgSVNfTE9XX1NVUlJPR0FURShhVGV4dFtpXSkpIHsKLSAgICAgIG5l
ZWRfY29weSA9IFRSVUU7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZWxzZSBpZiAoSVNfSElH
SF9TVVJST0dBVEUoYVRleHRbaV0pKSB7Ci0gICAgICBpZiAoaSA8IGFMZW5ndGggLSAxICYmIElT
X0xPV19TVVJST0dBVEUoYVRleHRbaSsxXSkpCi0gICAgICAgIGkrKzsKLSAgICAgIGVsc2Ugewot
ICAgICAgICBuZWVkX2NvcHkgPSBUUlVFOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9
Ci0gIH0KLQotICBpZiAobmVlZF9jb3B5KSB7Ci0KLSAgICAvKiBQYW5nbyBkb2Vzbid0IGNvcnJl
Y3RseSBoYW5kbGUgbnVscy4gIFdlIGNvbnZlcnQgdGhlbSB0byAweGZmLiAqLwotICAgIC8qIEFs
c28gInZhbGlkYXRlIiBVVEYtMTYgdGV4dCB0byBtYWtlIHN1cmUgY29udmVyc2lvbiBkb2Vzbid0
IGZhaWwuICovCi0KLSAgICBVQ2hhciogcCA9IChVQ2hhciopZ19tZW1kdXAoYVRleHQsIGFMZW5n
dGggKiBzaXplb2YoYVRleHRbMF0pKTsKLQotICAgIC8qIGRvbid0IG5lZWQgdG8gcmVzZXQgaSAq
LwotICAgIGZvciAoaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHsKLSAgICAgIGlmICghcFtpXSB8
fCBJU19MT1dfU1VSUk9HQVRFKHBbaV0pKQotICAgICAgICBwW2ldID0gMHhGRkZEOwotICAgICAg
ZWxzZSBpZiAoSVNfSElHSF9TVVJST0dBVEUocFtpXSkpIHsKLSAgICAgICAgaWYgKGkgPCBhTGVu
Z3RoIC0gMSAmJiBJU19MT1dfU1VSUk9HQVRFKGFUZXh0W2krMV0pKQotICAgICAgICAgIGkrKzsK
LSAgICAgICAgZWxzZQotICAgICAgICAgIHBbaV0gPSAweEZGRkQ7Ci0gICAgICB9Ci0gICAgfQot
Ci0gICAgYVRleHQgPSBwOwotICB9Ci0KLSAgZ2xvbmcgaXRlbXNfd3JpdHRlbjsKLSAgdGV4dCA9
IGdfdXRmMTZfdG9fdXRmOChyZWludGVycHJldF9jYXN0PGNvbnN0IGd1bmljaGFyMio+KGFUZXh0
KSwgYUxlbmd0aCwgTlVMTCwgJml0ZW1zX3dyaXR0ZW4sIE5VTEwpOwotICBsZW5ndGggPSBpdGVt
c193cml0dGVuOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYUxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmICghYVRleHRbaV0gfHwgSVNfTE9XX1NVUlJPR0FURShhVGV4dFtpXSkpIHsKKyAgICAg
ICAgICAgIG5lZWRDb3B5ID0gVFJVRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IAog
Ci0gIGlmIChuZWVkX2NvcHkpCi0gICAgZ19mcmVlKChncG9pbnRlcilhVGV4dCk7CisgICAgICAg
IGlmIChJU19ISUdIX1NVUlJPR0FURShhVGV4dFtpXSkpIHsKKyAgICAgICAgICAgIGlmIChpIDwg
YUxlbmd0aCAtIDEgJiYgSVNfTE9XX1NVUlJPR0FURShhVGV4dFtpKzFdKSkKKyAgICAgICAgICAg
ICAgICBpKys7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZWVkQ29weSA9
IFRSVUU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBHT3duUHRyPFVDaGFyPiBjb3BpZWRTdHJpbmc7CisgICAgaWYgKG5lZWRD
b3B5KSB7CisgICAgICAgIC8qIFBhbmdvIGRvZXNuJ3QgY29ycmVjdGx5IGhhbmRsZSBudWxzLiAg
V2UgY29udmVydCB0aGVtIHRvIDB4ZmYuICovCisgICAgICAgIC8qIEFsc28gInZhbGlkYXRlIiBV
VEYtMTYgdGV4dCB0byBtYWtlIHN1cmUgY29udmVyc2lvbiBkb2Vzbid0IGZhaWwuICovCisKKyAg
ICAgICAgY29waWVkU3RyaW5nLnNldChzdGF0aWNfY2FzdDxVQ2hhcio+KGdfbWVtZHVwKGFUZXh0
LCBhTGVuZ3RoICogc2l6ZW9mKGFUZXh0WzBdKSkpKTsKKyAgICAgICAgVUNoYXIqIHAgPSBjb3Bp
ZWRTdHJpbmcuZ2V0KCk7CisKKyAgICAgICAgLyogZG9uJ3QgbmVlZCB0byByZXNldCBpICovCisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYUxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBp
ZiAoIXBbaV0gfHwgSVNfTE9XX1NVUlJPR0FURShwW2ldKSkKKyAgICAgICAgICAgICAgICBwW2ld
ID0gMHhGRkZEOworICAgICAgICAgICAgZWxzZSBpZiAoSVNfSElHSF9TVVJST0dBVEUocFtpXSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGFMZW5ndGggLSAxICYmIElTX0xPV19TVVJST0dB
VEUoYVRleHRbaSsxXSkpCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHBbaV0gPSAweEZGRkQ7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBhVGV4dCA9IHA7CisgICAgfQorCisgICAgZ2NoYXIqIHV0
ZjhUZXh0OworICAgIGdsb25nIGl0ZW1zV3JpdHRlbjsKKyAgICB1dGY4VGV4dCA9IGdfdXRmMTZf
dG9fdXRmOChzdGF0aWNfY2FzdDxjb25zdCBndW5pY2hhcjIqPihhVGV4dCksIGFMZW5ndGgsIDAs
ICZpdGVtc1dyaXR0ZW4sIDApOworICAgIGxlbmd0aCA9IGl0ZW1zV3JpdHRlbjsKIAorICAgIHJl
dHVybiB1dGY4VGV4dDsKIH0KIAogc3RhdGljIGdjaGFyKiBjb252ZXJ0VW5pQ2hhclRvVVRGOChj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgZ2ludCBsZW5ndGgsIGludCBmcm9tLCBpbnQgdG8pCiB7
Ci0gICAgZ2NoYXIqIHV0ZjggPSAwOwotICAgIGdpbnQgbmV3X2xlbmd0aCA9IDA7Ci0gICAgdXRm
MTZfdG9fdXRmOChjaGFyYWN0ZXJzLCBsZW5ndGgsIHV0ZjgsIG5ld19sZW5ndGgpOwotICAgIGlm
ICghdXRmOCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZ2ludCBuZXdMZW5ndGggPSAwOwor
ICAgIEdPd25QdHI8Z2NoYXI+IHV0ZjhUZXh0KHV0ZjE2VG9VdGY4KGNoYXJhY3RlcnMsIGxlbmd0
aCwgbmV3TGVuZ3RoKSk7CisgICAgaWYgKCF1dGY4VGV4dCkKKyAgICAgICAgcmV0dXJuIDA7CiAK
KyAgICBnY2hhciogcG9zID0gdXRmOFRleHQuZ2V0KCk7CiAgICAgaWYgKGZyb20gPiAwKSB7CiAg
ICAgICAgIC8vIGRpc2NhcmQgdGhlIGZpcnN0ICdmcm9tJyBjaGFyYWN0ZXJzCiAgICAgICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgZG8gdGhpcyBiZWZvcmUgdGhlIGNvbnZlcnNpb24gcHJvYmFibHkK
LSAgICAgICAgZ2NoYXIqIHN0cl9sZWZ0ID0gZ191dGY4X29mZnNldF90b19wb2ludGVyKHV0Zjgs
IGZyb20pOwotICAgICAgICBnY2hhciogdG1wID0gZ19zdHJkdXAoc3RyX2xlZnQpOwotICAgICAg
ICBnX2ZyZWUodXRmOCk7Ci0gICAgICAgIHV0ZjggPSB0bXA7CisgICAgICAgIHBvcyA9IGdfdXRm
OF9vZmZzZXRfdG9fcG9pbnRlcih1dGY4VGV4dC5nZXQoKSwgZnJvbSk7CiAgICAgfQogCi0gICAg
Z2NoYXIqIHBvcyA9IHV0Zjg7CiAgICAgZ2ludCBsZW4gPSBzdHJsZW4ocG9zKTsKICAgICBHU3Ry
aW5nKiByZXQgPSBnX3N0cmluZ19uZXdfbGVuKE5VTEwsIGxlbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87963</attachid>
            <date>2011-04-01 21:40:06 -0700</date>
            <delta_ts>2011-04-02 12:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57307-20110402134005.patch</filename>
            <type>text/plain</type>
            <size>5057</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNzY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMDEgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEZpeCBsZWFrZWQgcG9pbnRlciBpbiBGb250R3Rr
LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcz
MDcKKworICAgICAgICBGaXggYSBtZW1vcnkgbGVhay4KKworICAgICAgICBObyBuZXcgZnVuY3Rp
b25hbGl0eSwgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXRmMTZUb1V0ZjgpOiBSZW5hbWUg
dXRmMTZfdG9fdXRmOCBhbmQgZml4IGluZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFVuaUNoYXJUb1VURjgpOgorCiAyMDExLTA0LTAxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJv
ZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAko
cmV2aXNpb24gODI3NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Rm9udEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUg
IkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgorI2luY2x1ZGUg
IkdPd25QdHIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC04Myw3NSArODQs
NzEgQEAgSW50UmVjdCBnZXRQYW5nb1JlZ2lvbkV4dGVudHMoUGFuZ29SZWdpbwogI2RlZmluZSBJ
U19ISUdIX1NVUlJPR0FURSh1KSAgKChVQ2hhcikodSkgPj0gKFVDaGFyKTB4ZDgwMCAmJiAoVUNo
YXIpKHUpIDw9IChVQ2hhcikweGRiZmYpCiAjZGVmaW5lIElTX0xPV19TVVJST0dBVEUodSkgICgo
VUNoYXIpKHUpID49IChVQ2hhcikweGRjMDAgJiYgKFVDaGFyKSh1KSA8PSAoVUNoYXIpMHhkZmZm
KQogCi1zdGF0aWMgdm9pZCB1dGYxNl90b191dGY4KGNvbnN0IFVDaGFyKiBhVGV4dCwgZ2ludCBh
TGVuZ3RoLCBjaGFyKiAmdGV4dCwgZ2ludCAmbGVuZ3RoKQorc3RhdGljIGdjaGFyKiB1dGYxNlRv
VXRmOChjb25zdCBVQ2hhciogYVRleHQsIGdpbnQgYUxlbmd0aCwgZ2ludCAmbGVuZ3RoKQogewot
ICBnYm9vbGVhbiBuZWVkX2NvcHkgPSBGQUxTRTsKLSAgaW50IGk7CisgICAgZ2Jvb2xlYW4gbmVl
ZENvcHkgPSBGQUxTRTsKIAotICBmb3IgKGkgPSAwOyBpIDwgYUxlbmd0aDsgaSsrKSB7Ci0gICAg
aWYgKCFhVGV4dFtpXSB8fCBJU19MT1dfU1VSUk9HQVRFKGFUZXh0W2ldKSkgewotICAgICAgbmVl
ZF9jb3B5ID0gVFJVRTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBlbHNlIGlmIChJU19ISUdI
X1NVUlJPR0FURShhVGV4dFtpXSkpIHsKLSAgICAgIGlmIChpIDwgYUxlbmd0aCAtIDEgJiYgSVNf
TE9XX1NVUlJPR0FURShhVGV4dFtpKzFdKSkKLSAgICAgICAgaSsrOwotICAgICAgZWxzZSB7Ci0g
ICAgICAgIG5lZWRfY29weSA9IFRSVUU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0K
LSAgfQotCi0gIGlmIChuZWVkX2NvcHkpIHsKLQotICAgIC8qIFBhbmdvIGRvZXNuJ3QgY29ycmVj
dGx5IGhhbmRsZSBudWxzLiAgV2UgY29udmVydCB0aGVtIHRvIDB4ZmYuICovCi0gICAgLyogQWxz
byAidmFsaWRhdGUiIFVURi0xNiB0ZXh0IHRvIG1ha2Ugc3VyZSBjb252ZXJzaW9uIGRvZXNuJ3Qg
ZmFpbC4gKi8KLQotICAgIFVDaGFyKiBwID0gKFVDaGFyKilnX21lbWR1cChhVGV4dCwgYUxlbmd0
aCAqIHNpemVvZihhVGV4dFswXSkpOwotCi0gICAgLyogZG9uJ3QgbmVlZCB0byByZXNldCBpICov
Ci0gICAgZm9yIChpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykgewotICAgICAgaWYgKCFwW2ldIHx8
IElTX0xPV19TVVJST0dBVEUocFtpXSkpCi0gICAgICAgIHBbaV0gPSAweEZGRkQ7Ci0gICAgICBl
bHNlIGlmIChJU19ISUdIX1NVUlJPR0FURShwW2ldKSkgewotICAgICAgICBpZiAoaSA8IGFMZW5n
dGggLSAxICYmIElTX0xPV19TVVJST0dBVEUoYVRleHRbaSsxXSkpCi0gICAgICAgICAgaSsrOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgcFtpXSA9IDB4RkZGRDsKLSAgICAgIH0KLSAgICB9Ci0K
LSAgICBhVGV4dCA9IHA7Ci0gIH0KLQotICBnbG9uZyBpdGVtc193cml0dGVuOwotICB0ZXh0ID0g
Z191dGYxNl90b191dGY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VuaWNoYXIyKj4oYVRleHQp
LCBhTGVuZ3RoLCBOVUxMLCAmaXRlbXNfd3JpdHRlbiwgTlVMTCk7Ci0gIGxlbmd0aCA9IGl0ZW1z
X3dyaXR0ZW47CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgaWYgKCFhVGV4dFtpXSB8fCBJU19MT1dfU1VSUk9HQVRFKGFUZXh0W2ldKSkgeworICAgICAg
ICAgICAgbmVlZENvcHkgPSBUUlVFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gCiAK
LSAgaWYgKG5lZWRfY29weSkKLSAgICBnX2ZyZWUoKGdwb2ludGVyKWFUZXh0KTsKKyAgICAgICAg
aWYgKElTX0hJR0hfU1VSUk9HQVRFKGFUZXh0W2ldKSkgeworICAgICAgICAgICAgaWYgKGkgPCBh
TGVuZ3RoIC0gMSAmJiBJU19MT1dfU1VSUk9HQVRFKGFUZXh0W2krMV0pKQorICAgICAgICAgICAg
ICAgIGkrKzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG5lZWRDb3B5ID0g
VFJVRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIEdPd25QdHI8VUNoYXI+IGNvcGllZFN0cmluZzsKKyAgICBpZiAobmVlZENv
cHkpIHsKKyAgICAgICAgLyogUGFuZ28gZG9lc24ndCBjb3JyZWN0bHkgaGFuZGxlIG51bHMuICBX
ZSBjb252ZXJ0IHRoZW0gdG8gMHhmZi4gKi8KKyAgICAgICAgLyogQWxzbyAidmFsaWRhdGUiIFVU
Ri0xNiB0ZXh0IHRvIG1ha2Ugc3VyZSBjb252ZXJzaW9uIGRvZXNuJ3QgZmFpbC4gKi8KKworICAg
ICAgICBjb3BpZWRTdHJpbmcuc2V0KHN0YXRpY19jYXN0PFVDaGFyKj4oZ19tZW1kdXAoYVRleHQs
IGFMZW5ndGggKiBzaXplb2YoYVRleHRbMF0pKSkpOworICAgICAgICBVQ2hhciogcCA9IGNvcGll
ZFN0cmluZy5nZXQoKTsKKworICAgICAgICAvKiBkb24ndCBuZWVkIHRvIHJlc2V0IGkgKi8KKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlm
ICghcFtpXSB8fCBJU19MT1dfU1VSUk9HQVRFKHBbaV0pKQorICAgICAgICAgICAgICAgIHBbaV0g
PSAweEZGRkQ7CisgICAgICAgICAgICBlbHNlIGlmIChJU19ISUdIX1NVUlJPR0FURShwW2ldKSkg
eworICAgICAgICAgICAgICAgIGlmIChpIDwgYUxlbmd0aCAtIDEgJiYgSVNfTE9XX1NVUlJPR0FU
RShhVGV4dFtpKzFdKSkKKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcFtpXSA9IDB4RkZGRDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGFUZXh0ID0gcDsKKyAgICB9CisKKyAgICBnY2hhciogdXRm
OFRleHQ7CisgICAgZ2xvbmcgaXRlbXNXcml0dGVuOworICAgIHV0ZjhUZXh0ID0gZ191dGYxNl90
b191dGY4KHN0YXRpY19jYXN0PGNvbnN0IGd1bmljaGFyMio+KGFUZXh0KSwgYUxlbmd0aCwgMCwg
Jml0ZW1zV3JpdHRlbiwgMCk7CisgICAgbGVuZ3RoID0gaXRlbXNXcml0dGVuOwogCisgICAgcmV0
dXJuIHV0ZjhUZXh0OwogfQogCiBzdGF0aWMgZ2NoYXIqIGNvbnZlcnRVbmlDaGFyVG9VVEY4KGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBnaW50IGxlbmd0aCwgaW50IGZyb20sIGludCB0bykKIHsK
LSAgICBnY2hhciogdXRmOCA9IDA7Ci0gICAgZ2ludCBuZXdfbGVuZ3RoID0gMDsKLSAgICB1dGYx
Nl90b191dGY4KGNoYXJhY3RlcnMsIGxlbmd0aCwgdXRmOCwgbmV3X2xlbmd0aCk7Ci0gICAgaWYg
KCF1dGY4KQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBnaW50IG5ld0xlbmd0aCA9IDA7Cisg
ICAgR093blB0cjxnY2hhcj4gdXRmOFRleHQodXRmMTZUb1V0ZjgoY2hhcmFjdGVycywgbGVuZ3Ro
LCBuZXdMZW5ndGgpKTsKKyAgICBpZiAoIXV0ZjhUZXh0KQorICAgICAgICByZXR1cm4gMDsKIAor
ICAgIGdjaGFyKiBwb3MgPSB1dGY4VGV4dC5nZXQoKTsKICAgICBpZiAoZnJvbSA+IDApIHsKICAg
ICAgICAgLy8gZGlzY2FyZCB0aGUgZmlyc3QgJ2Zyb20nIGNoYXJhY3RlcnMKICAgICAgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBkbyB0aGlzIGJlZm9yZSB0aGUgY29udmVyc2lvbiBwcm9iYWJseQot
ICAgICAgICBnY2hhciogc3RyX2xlZnQgPSBnX3V0Zjhfb2Zmc2V0X3RvX3BvaW50ZXIodXRmOCwg
ZnJvbSk7Ci0gICAgICAgIGdjaGFyKiB0bXAgPSBnX3N0cmR1cChzdHJfbGVmdCk7Ci0gICAgICAg
IGdfZnJlZSh1dGY4KTsKLSAgICAgICAgdXRmOCA9IHRtcDsKKyAgICAgICAgcG9zID0gZ191dGY4
X29mZnNldF90b19wb2ludGVyKHV0ZjhUZXh0LmdldCgpLCBmcm9tKTsKICAgICB9CiAKLSAgICBn
Y2hhciogcG9zID0gdXRmODsKICAgICBnaW50IGxlbiA9IHN0cmxlbihwb3MpOwogICAgIEdTdHJp
bmcqIHJldCA9IGdfc3RyaW5nX25ld19sZW4oTlVMTCwgbGVuKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>