<?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>151917</bug_id>
          
          <creation_ts>2015-12-05 15:02:05 -0800</creation_ts>
          <short_desc>Make UCharIterator createIterator(StringView) visible to other classes</short_desc>
          <delta_ts>2015-12-14 11:42:15 -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>Web Template Framework</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146650</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-05 15:02:05 -0800</bug_when>
    <thetext>Move the code for creating a UCharIterator from a StringView from CollatorICU.cpp to StringView.h/.cpp so that future patches that will use ucol_strcollIter (including Bug 147604) can use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146652</commentid>
    <comment_count>1</comment_count>
      <attachid>266722</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-05 15:06:12 -0800</bug_when>
    <thetext>Created attachment 266722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146736</commentid>
    <comment_count>2</comment_count>
      <attachid>266722</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-06 18:38:17 -0800</bug_when>
    <thetext>Comment on attachment 266722
Patch

Why should this be a member function instead of just a function that takes a StringView?

It’s a little bit dangerous to create one of these UCharIterator objects for general use, because the iterator only good as long as the characters pointer to by the StringView are good. The functions we pass to the UCharIterator don’t do the CHECK_STRINGVIEW_LIFETIME checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148835</commentid>
    <comment_count>3</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-13 12:50:45 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 266722 [details]
&gt; Patch
&gt; 
&gt; Why should this be a member function instead of just a function that takes a
&gt; StringView?
&gt; 
&gt; It’s a little bit dangerous to create one of these UCharIterator objects for
&gt; general use, because the iterator only good as long as the characters
&gt; pointer to by the StringView are good. The functions we pass to the
&gt; UCharIterator don’t do the CHECK_STRINGVIEW_LIFETIME checking.

Could you please advise me on how to go about this? Should I just change it to a function that takes a StringView while keeping it in StringView.h, or should I not do this in general? If the latter, is there a way to avoid duplicate code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148860</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-13 16:31:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Could you please advise me on how to go about this? Should I just change it
&gt; to a function that takes a StringView while keeping it in StringView.h, or
&gt; should I not do this in general? If the latter, is there a way to avoid
&gt; duplicate code?

As a first step, I’d suggest changing it to a function that takes a StringView and putting the function in Collator.h. Later we can move it somewhere else if we want to use UCharIterator for things other than collation.

The Collator abstraction is not super-important since we are OK with WebKit using ICU directly. It was created by someone who was trying to change WebKit to work with multiple international libraries, but that’s not really a goal for the project now.

Anyway, I think having UCharIterator createUCharIterator(StringView) in Collator.h would be a fine way to share it with other code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148915</commentid>
    <comment_count>5</comment_count>
      <attachid>267286</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-14 01:52:45 -0800</bug_when>
    <thetext>Created attachment 267286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148961</commentid>
    <comment_count>6</comment_count>
      <attachid>267286</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-14 08:20:06 -0800</bug_when>
    <thetext>Comment on attachment 267286
Patch

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

&gt; Source/WTF/wtf/unicode/Collator.h:71
&gt; +UCharIterator createIterator(StringView);

Might later find that we need a more specific name like createUCharIterator but lets start with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149029</commentid>
    <comment_count>7</comment_count>
      <attachid>267286</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-14 11:42:10 -0800</bug_when>
    <thetext>Comment on attachment 267286
Patch

Clearing flags on attachment: 267286

Committed r194041: &lt;http://trac.webkit.org/changeset/194041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149030</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-14 11:42:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266722</attachid>
            <date>2015-12-05 15:06:12 -0800</date>
            <delta_ts>2015-12-14 01:52:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151917-20151205150552.patch</filename>
            <type>text/plain</type>
            <size>9445</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg2NDJmYzEzNGQ1NjIwMDAzZjI4ODU2
YWEyYWUzNDQ2NTRmNTkzMzkuLjhmNGZmMDYxODY2MDhjZjY5ZmRhOTc3NDEyYWNjN2Q1MTNkN2Nh
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTUtMTItMDUgIFN1a29sc2FrIFNha3NodXdvbmcg
IDxzdWtvbHNha0BnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFVDaGFySXRlcmF0b3Ig
U3RyaW5nVmlldzo6Y3JlYXRlSXRlcmF0b3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgY29kZSBmb3IgY3JlYXRpbmcgYSBVQ2hhckl0
ZXJhdG9yIGZyb20gYSBTdHJpbmdWaWV3IGZyb20KKyAgICAgICAgQ29sbGF0b3JJQ1UuY3BwIHRv
IFN0cmluZ1ZpZXcuaC8uY3BwIHNvIHRoYXQgZnV0dXJlIHBhdGNoZXMgdGhhdCB3aWxsCisgICAg
ICAgIHVzZSB1Y29sX3N0cmNvbGxJdGVyIChpbmNsdWRpbmcgQnVnIDE0NzYwNCkgY2FuIHVzZSBp
dC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpn
ZXRJbmRleExhdGluMSk6CisgICAgICAgIChXVEY6Om1vdmVMYXRpbjEpOgorICAgICAgICAoV1RG
OjpoYXNOZXh0TGF0aW4xKToKKyAgICAgICAgKFdURjo6aGFzUHJldmlvdXNMYXRpbjEpOgorICAg
ICAgICAoV1RGOjpjdXJyZW50TGF0aW4xKToKKyAgICAgICAgKFdURjo6bmV4dExhdGluMSk6Cisg
ICAgICAgIChXVEY6OnByZXZpb3VzTGF0aW4xKToKKyAgICAgICAgKFdURjo6Z2V0U3RhdGVMYXRp
bjEpOgorICAgICAgICAoV1RGOjpzZXRTdGF0ZUxhdGluMSk6CisgICAgICAgIChXVEY6OmNyZWF0
ZUxhdGluMUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6Y3JlYXRlSXRlcmF0
b3IpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpDb2xsYXRvcjo6Y29sbGF0
ZSk6CisgICAgICAgIChXVEY6OmdldEluZGV4TGF0aW4xKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bW92ZUxhdGluMSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Omhhc05leHRMYXRpbjEpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpoYXNQcmV2aW91c0xhdGluMSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OmN1cnJlbnRMYXRpbjEpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpuZXh0TGF0
aW4xKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJldmlvdXNMYXRpbjEpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpnZXRTdGF0ZUxhdGluMSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnNl
dFN0YXRlTGF0aW4xKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3JlYXRlTGF0aW4xSXRlcmF0
b3IpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjcmVhdGVJdGVyYXRvcik6IERlbGV0ZWQuCisK
IDIwMTUtMTEtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2V0IHJpZCBvZiB0aGUgIVVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkgY29kZXBh
dGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDk5N2YwNTBkMGY3NjkzY2Q0YmI4
MDE1MmU2MmE5ZjFhNWVkMDYxNDEuLjBjYzgzN2RkNjYyNzUwYzU0MTYzNDBhMzE2ZDc5ZGY2ZTk5
Y2MyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtNzcsNiArNzcsMTAzIEBA
IGJvb2wgU3RyaW5nVmlldzo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdW
aWV3JiBzdWZmaXgpIGNvbnN0CiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCp0aGlzLCBzdWZmaXgpOwogfQogCitzdGF0aWMgaW50MzJfdCBnZXRJbmRleExhdGlu
MShVQ2hhckl0ZXJhdG9yKiBpdGVyYXRvciwgVUNoYXJJdGVyYXRvck9yaWdpbiBvcmlnaW4pCit7
CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIFVJVEVSX1NUQVJUOgorICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPnN0YXJ0OworICAgIGNhc2UgVUlURVJfQ1VSUkVOVDoKKyAgICAgICAg
cmV0dXJuIGl0ZXJhdG9yLT5pbmRleDsKKyAgICBjYXNlIFVJVEVSX0xJTUlUOgorICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPmxpbWl0OworICAgIGNhc2UgVUlURVJfWkVSTzoKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgY2FzZSBVSVRFUl9MRU5HVEg6CisgICAgICAgIHJldHVybiBpdGVyYXRvci0+
bGVuZ3RoOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVV9T
RU5USU5FTDsKK30KKworc3RhdGljIGludDMyX3QgbW92ZUxhdGluMShVQ2hhckl0ZXJhdG9yKiBp
dGVyYXRvciwgaW50MzJfdCBkZWx0YSwgVUNoYXJJdGVyYXRvck9yaWdpbiBvcmlnaW4pCit7Cisg
ICAgcmV0dXJuIGl0ZXJhdG9yLT5pbmRleCA9IGdldEluZGV4TGF0aW4xKGl0ZXJhdG9yLCBvcmln
aW4pICsgZGVsdGE7Cit9CisKK3N0YXRpYyBVQm9vbCBoYXNOZXh0TGF0aW4xKFVDaGFySXRlcmF0
b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiBpdGVyYXRvci0+aW5kZXggPCBpdGVyYXRvci0+
bGltaXQ7Cit9CisKK3N0YXRpYyBVQm9vbCBoYXNQcmV2aW91c0xhdGluMShVQ2hhckl0ZXJhdG9y
KiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3ItPmluZGV4ID4gaXRlcmF0b3ItPnN0
YXJ0OworfQorCitzdGF0aWMgVUNoYXIzMiBjdXJyZW50TGF0aW4xKFVDaGFySXRlcmF0b3IqIGl0
ZXJhdG9yKQoreworICAgIEFTU0VSVChpdGVyYXRvci0+aW5kZXggPj0gaXRlcmF0b3ItPnN0YXJ0
KTsKKyAgICBpZiAoaXRlcmF0b3ItPmluZGV4ID49IGl0ZXJhdG9yLT5saW1pdCkKKyAgICAgICAg
cmV0dXJuIFVfU0VOVElORUw7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4o
aXRlcmF0b3ItPmNvbnRleHQpW2l0ZXJhdG9yLT5pbmRleF07Cit9CisKK3N0YXRpYyBVQ2hhcjMy
IG5leHRMYXRpbjEoVUNoYXJJdGVyYXRvciogaXRlcmF0b3IpCit7CisgICAgQVNTRVJUKGl0ZXJh
dG9yLT5pbmRleCA+PSBpdGVyYXRvci0+c3RhcnQpOworICAgIGlmIChpdGVyYXRvci0+aW5kZXgg
Pj0gaXRlcmF0b3ItPmxpbWl0KQorICAgICAgICByZXR1cm4gVV9TRU5USU5FTDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihpdGVyYXRvci0+Y29udGV4dClbaXRlcmF0b3It
PmluZGV4KytdOworfQorCitzdGF0aWMgVUNoYXIzMiBwcmV2aW91c0xhdGluMShVQ2hhckl0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3ItPmluZGV4IDw9IGl0ZXJhdG9yLT5z
dGFydCkKKyAgICAgICAgcmV0dXJuIFVfU0VOVElORUw7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IExDaGFyKj4oaXRlcmF0b3ItPmNvbnRleHQpWy0taXRlcmF0b3ItPmluZGV4XTsKK30K
Kworc3RhdGljIHVpbnQzMl90IGdldFN0YXRlTGF0aW4xKGNvbnN0IFVDaGFySXRlcmF0b3IqIGl0
ZXJhdG9yKQoreworICAgIHJldHVybiBpdGVyYXRvci0+aW5kZXg7Cit9CisKK3N0YXRpYyB2b2lk
IHNldFN0YXRlTGF0aW4xKFVDaGFySXRlcmF0b3IqIGl0ZXJhdG9yLCB1aW50MzJfdCBzdGF0ZSwg
VUVycm9yQ29kZSopCit7CisgICAgaXRlcmF0b3ItPmluZGV4ID0gc3RhdGU7Cit9CisKK3N0YXRp
YyBVQ2hhckl0ZXJhdG9yIGNyZWF0ZUxhdGluMUl0ZXJhdG9yKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCBpbnQgbGVuZ3RoKQoreworICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3I7CisgICAgaXRl
cmF0b3IuY29udGV4dCA9IGNoYXJhY3RlcnM7CisgICAgaXRlcmF0b3IubGVuZ3RoID0gbGVuZ3Ro
OworICAgIGl0ZXJhdG9yLnN0YXJ0ID0gMDsKKyAgICBpdGVyYXRvci5pbmRleCA9IDA7CisgICAg
aXRlcmF0b3IubGltaXQgPSBsZW5ndGg7CisgICAgaXRlcmF0b3IucmVzZXJ2ZWRGaWVsZCA9IDA7
CisgICAgaXRlcmF0b3IuZ2V0SW5kZXggPSBnZXRJbmRleExhdGluMTsKKyAgICBpdGVyYXRvci5t
b3ZlID0gbW92ZUxhdGluMTsKKyAgICBpdGVyYXRvci5oYXNOZXh0ID0gaGFzTmV4dExhdGluMTsK
KyAgICBpdGVyYXRvci5oYXNQcmV2aW91cyA9IGhhc1ByZXZpb3VzTGF0aW4xOworICAgIGl0ZXJh
dG9yLmN1cnJlbnQgPSBjdXJyZW50TGF0aW4xOworICAgIGl0ZXJhdG9yLm5leHQgPSBuZXh0TGF0
aW4xOworICAgIGl0ZXJhdG9yLnByZXZpb3VzID0gcHJldmlvdXNMYXRpbjE7CisgICAgaXRlcmF0
b3IucmVzZXJ2ZWRGbiA9IG51bGxwdHI7CisgICAgaXRlcmF0b3IuZ2V0U3RhdGUgPSBnZXRTdGF0
ZUxhdGluMTsKKyAgICBpdGVyYXRvci5zZXRTdGF0ZSA9IHNldFN0YXRlTGF0aW4xOworICAgIHJl
dHVybiBpdGVyYXRvcjsKK30KKworVUNoYXJJdGVyYXRvciBTdHJpbmdWaWV3OjpjcmVhdGVJdGVy
YXRvcigpIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gY3JlYXRl
TGF0aW4xSXRlcmF0b3IoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOworICAgIFVDaGFySXRlcmF0
b3IgaXRlcmF0b3I7CisgICAgdWl0ZXJfc2V0U3RyaW5nKCZpdGVyYXRvciwgY2hhcmFjdGVyczE2
KCksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisKIGJvb2wgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGJMZW5n
dGgpCiB7CiAgICAgaWYgKGJMZW5ndGggIT0gYS5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggZmI3MmJiNjhkZDZhN2ZjNzZkODc5NDY2NWJjNzhlY2UzYTU0NjlmMi4uMDIz
YTY1MDQwN2RhZDA5YTc0MDMxMjVmZGUwNWQ4MDk3YWFlM2NlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTQzLDYgKzQzLDggQEAKICNkZWZpbmUgQ0hFQ0tfU1RSSU5HVklFV19MSUZF
VElNRSAxCiAjZW5kaWYKIAorc3RydWN0IFVDaGFySXRlcmF0b3I7CisKIG5hbWVzcGFjZSBXVEYg
ewogCiAvLyBTdHJpbmdWaWV3IGlzIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBzdHJpbmcs
IHNpbWlsYXIgdG8gdGhlIHByb3Bvc2VkIHN0ZDo6c3RyaW5nX3ZpZXcuCkBAIC0xMjUsNiArMTI3
LDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBl
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAorICAg
IFVDaGFySXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSBjb25zdDsKKwogICAgIGludCB0b0ludChi
b29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklD
VS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKaW5kZXgg
OTRjNTM4ZWZmOGZmMjUzOTM1ODMwMTcyZjI0N2VlNDE0MGNiYjBlOS4uOWY1YWEwYzY2ZmQ0NDEz
ZmEzMDkyNGNjZmQ0YmU1MTAwOTg2ZTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5p
Y29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1
L0NvbGxhdG9ySUNVLmNwcApAQCAtMTQ4LDEwNyArMTQ4LDEwIEBAIENvbGxhdG9yOjp+Q29sbGF0
b3IoKQogICAgIGNhY2hlZENvbGxhdG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0ID0gbV9zaG91
bGRTb3J0TG93ZXJjYXNlRmlyc3Q7CiB9CiAKLXN0YXRpYyBpbnQzMl90IGdldEluZGV4TGF0aW4x
KFVDaGFySXRlcmF0b3IqIGl0ZXJhdG9yLCBVQ2hhckl0ZXJhdG9yT3JpZ2luIG9yaWdpbikKLXsK
LSAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgVUlURVJfU1RBUlQ6Ci0gICAgICAgIHJl
dHVybiBpdGVyYXRvci0+c3RhcnQ7Ci0gICAgY2FzZSBVSVRFUl9DVVJSRU5UOgotICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPmluZGV4OwotICAgIGNhc2UgVUlURVJfTElNSVQ6Ci0gICAgICAgIHJl
dHVybiBpdGVyYXRvci0+bGltaXQ7Ci0gICAgY2FzZSBVSVRFUl9aRVJPOgotICAgICAgICByZXR1
cm4gMDsKLSAgICBjYXNlIFVJVEVSX0xFTkdUSDoKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT5s
ZW5ndGg7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBVX1NF
TlRJTkVMOwotfQotCi1zdGF0aWMgaW50MzJfdCBtb3ZlTGF0aW4xKFVDaGFySXRlcmF0b3IqIGl0
ZXJhdG9yLCBpbnQzMl90IGRlbHRhLCBVQ2hhckl0ZXJhdG9yT3JpZ2luIG9yaWdpbikKLXsKLSAg
ICByZXR1cm4gaXRlcmF0b3ItPmluZGV4ID0gZ2V0SW5kZXhMYXRpbjEoaXRlcmF0b3IsIG9yaWdp
bikgKyBkZWx0YTsKLX0KLQotc3RhdGljIFVCb29sIGhhc05leHRMYXRpbjEoVUNoYXJJdGVyYXRv
ciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT5pbmRleCA8IGl0ZXJhdG9yLT5s
aW1pdDsKLX0KLQotc3RhdGljIFVCb29sIGhhc1ByZXZpb3VzTGF0aW4xKFVDaGFySXRlcmF0b3Iq
IGl0ZXJhdG9yKQotewotICAgIHJldHVybiBpdGVyYXRvci0+aW5kZXggPiBpdGVyYXRvci0+c3Rh
cnQ7Ci19Ci0KLXN0YXRpYyBVQ2hhcjMyIGN1cnJlbnRMYXRpbjEoVUNoYXJJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgQVNTRVJUKGl0ZXJhdG9yLT5pbmRleCA+PSBpdGVyYXRvci0+c3RhcnQp
OwotICAgIGlmIChpdGVyYXRvci0+aW5kZXggPj0gaXRlcmF0b3ItPmxpbWl0KQotICAgICAgICBy
ZXR1cm4gVV9TRU5USU5FTDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihp
dGVyYXRvci0+Y29udGV4dClbaXRlcmF0b3ItPmluZGV4XTsKLX0KLQotc3RhdGljIFVDaGFyMzIg
bmV4dExhdGluMShVQ2hhckl0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlQoaXRlcmF0
b3ItPmluZGV4ID49IGl0ZXJhdG9yLT5zdGFydCk7Ci0gICAgaWYgKGl0ZXJhdG9yLT5pbmRleCA+
PSBpdGVyYXRvci0+bGltaXQpCi0gICAgICAgIHJldHVybiBVX1NFTlRJTkVMOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGl0ZXJhdG9yLT5jb250ZXh0KVtpdGVyYXRvci0+
aW5kZXgrK107Ci19Ci0KLXN0YXRpYyBVQ2hhcjMyIHByZXZpb3VzTGF0aW4xKFVDaGFySXRlcmF0
b3IqIGl0ZXJhdG9yKQotewotICAgIGlmIChpdGVyYXRvci0+aW5kZXggPD0gaXRlcmF0b3ItPnN0
YXJ0KQotICAgICAgICByZXR1cm4gVV9TRU5USU5FTDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgTENoYXIqPihpdGVyYXRvci0+Y29udGV4dClbLS1pdGVyYXRvci0+aW5kZXhdOwotfQot
Ci1zdGF0aWMgdWludDMyX3QgZ2V0U3RhdGVMYXRpbjEoY29uc3QgVUNoYXJJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLT5pbmRleDsKLX0KLQotc3RhdGljIHZvaWQg
c2V0U3RhdGVMYXRpbjEoVUNoYXJJdGVyYXRvciogaXRlcmF0b3IsIHVpbnQzMl90IHN0YXRlLCBV
RXJyb3JDb2RlKikKLXsKLSAgICBpdGVyYXRvci0+aW5kZXggPSBzdGF0ZTsKLX0KLQotc3RhdGlj
IFVDaGFySXRlcmF0b3IgY3JlYXRlTGF0aW4xSXRlcmF0b3IoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIGludCBsZW5ndGgpCi17Ci0gICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvcjsKLSAgICBpdGVy
YXRvci5jb250ZXh0ID0gY2hhcmFjdGVyczsKLSAgICBpdGVyYXRvci5sZW5ndGggPSBsZW5ndGg7
Ci0gICAgaXRlcmF0b3Iuc3RhcnQgPSAwOwotICAgIGl0ZXJhdG9yLmluZGV4ID0gMDsKLSAgICBp
dGVyYXRvci5saW1pdCA9IGxlbmd0aDsKLSAgICBpdGVyYXRvci5yZXNlcnZlZEZpZWxkID0gMDsK
LSAgICBpdGVyYXRvci5nZXRJbmRleCA9IGdldEluZGV4TGF0aW4xOwotICAgIGl0ZXJhdG9yLm1v
dmUgPSBtb3ZlTGF0aW4xOwotICAgIGl0ZXJhdG9yLmhhc05leHQgPSBoYXNOZXh0TGF0aW4xOwot
ICAgIGl0ZXJhdG9yLmhhc1ByZXZpb3VzID0gaGFzUHJldmlvdXNMYXRpbjE7Ci0gICAgaXRlcmF0
b3IuY3VycmVudCA9IGN1cnJlbnRMYXRpbjE7Ci0gICAgaXRlcmF0b3IubmV4dCA9IG5leHRMYXRp
bjE7Ci0gICAgaXRlcmF0b3IucHJldmlvdXMgPSBwcmV2aW91c0xhdGluMTsKLSAgICBpdGVyYXRv
ci5yZXNlcnZlZEZuID0gbnVsbHB0cjsKLSAgICBpdGVyYXRvci5nZXRTdGF0ZSA9IGdldFN0YXRl
TGF0aW4xOwotICAgIGl0ZXJhdG9yLnNldFN0YXRlID0gc2V0U3RhdGVMYXRpbjE7Ci0gICAgcmV0
dXJuIGl0ZXJhdG9yOwotfQotCi1zdGF0aWMgVUNoYXJJdGVyYXRvciBjcmVhdGVJdGVyYXRvcihT
dHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlTGF0aW4xSXRlcmF0b3Ioc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7Ci0gICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB1aXRlcl9zZXRTdHJp
bmcoJml0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCiBpbnQgQ29sbGF0b3I6OmNvbGxhdGUoU3RyaW5nVmll
dyBhLCBTdHJpbmdWaWV3IGIpIGNvbnN0CiB7Ci0gICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvckEg
PSBjcmVhdGVJdGVyYXRvcihhKTsKLSAgICBVQ2hhckl0ZXJhdG9yIGl0ZXJhdG9yQiA9IGNyZWF0
ZUl0ZXJhdG9yKGIpOworICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JBID0gYS5jcmVhdGVJdGVy
YXRvcigpOworICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JCID0gYi5jcmVhdGVJdGVyYXRvcigp
OwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludCByZXN1bHQg
PSB1Y29sX3N0cmNvbGxJdGVyKG1fY29sbGF0b3IsICZpdGVyYXRvckEsICZpdGVyYXRvckIsICZz
dGF0dXMpOwogICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267286</attachid>
            <date>2015-12-14 01:52:45 -0800</date>
            <delta_ts>2015-12-14 11:42:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151917-20151214015311.patch</filename>
            <type>text/plain</type>
            <size>2091</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4MmJkMjAzNWNhN2Y5OGFjNWIxYjAx
NzQ2YTkzNGJiYzBjZjU0NWIuLjBjNWNlNTVlMzhjYjMxM2Y4MTM1N2QzZTZkM2Y5NDI1ZDcyYWM0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTItMTQgIFN1a29sc2FrIFNha3NodXdvbmcg
IDxzdWtvbHNha0BnbWFpbC5jb20+CisKKyAgICAgICAgTWFrZSBVQ2hhckl0ZXJhdG9yIGNyZWF0
ZUl0ZXJhdG9yKFN0cmluZ1ZpZXcpIHZpc2libGUgdG8gb3RoZXIgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxOTE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBVQ2hhckl0ZXJhdG9y
IGNyZWF0ZUl0ZXJhdG9yKFN0cmluZ1ZpZXcpIGluIENvbGxhdG9ySUNVLmNwcCB2aXNpYmxlCisg
ICAgICAgIHRvIG90aGVyIGNsYXNzZXMgc28gdGhhdCBmdXR1cmUgcGF0Y2hlcyB0aGF0IHdpbGwg
dWNvbF9zdHJjb2xsSXRlcgorICAgICAgICAoaW5jbHVkaW5nIEJ1ZyAxNDc2MDQpIGNhbiB1c2Ug
aXQuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAqIHd0Zi91
bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHA6CisgICAgICAgIChXVEY6OmNyZWF0ZUl0ZXJhdG9y
KToKKwogMjAxNS0xMi0xMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW90ZSBJbnNwZWN0b3I6IFZlcmlmeSB0aGUgaWRlbnRpdHkgb2YgdGhlIG90
aGVyIHNpZGUgb2YgWFBDIGNvbm5lY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91
bmljb2RlL0NvbGxhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKaW5k
ZXggMWJhNWIxYmU3YjM4ZTg1MDQyNjhiMGI1MGMzNjk1NzQ5ZDRiZTVjNy4uYjk0M2IyMjUwNzg3
MWIyZDYyZjExMzA1NmFiNGQ2MmZhNmJjOWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dW5pY29kZS9Db2xsYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ29sbGF0b3Iu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbmZpZy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCitzdHJ1Y3QgVUNoYXJJdGVyYXRvcjsKIHN0cnVjdCBV
Q29sbGF0b3I7CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNjcsNiArNjgsOCBAQCBwcml2YXRlOgog
ICAgIFVDb2xsYXRvciogbV9jb2xsYXRvcjsKIH07CiAKK1VDaGFySXRlcmF0b3IgY3JlYXRlSXRl
cmF0b3IoU3RyaW5nVmlldyk7CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2Rl
L2ljdS9Db2xsYXRvcklDVS5jcHAKaW5kZXggOTRjNTM4ZWZmOGZmMjUzOTM1ODMwMTcyZjI0N2Vl
NDE0MGNiYjBlOS4uMTZmNGQ2OTM1YTk0YjFmZThiOGI0NjAzNDA3MDU3NTMyNTQwMDdhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcApAQCAtMjM2LDcgKzIz
Niw3IEBAIHN0YXRpYyBVQ2hhckl0ZXJhdG9yIGNyZWF0ZUxhdGluMUl0ZXJhdG9yKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KIAot
c3RhdGljIFVDaGFySXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitV
Q2hhckl0ZXJhdG9yIGNyZWF0ZUl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlm
IChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVMYXRpbjFJdGVyYXRvcihz
dHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>