<?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>52401</bug_id>
          
          <creation_ts>2011-01-13 15:13:48 -0800</creation_ts>
          <short_desc>Make CheckedInt&lt;long&gt; and CheckedInt&lt;unsigned long&gt; work</short_desc>
          <delta_ts>2011-01-18 14:50:50 -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>WebGL</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>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bjacob</cc>
    
    <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333972</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-13 15:13:48 -0800</bug_when>
    <thetext>Currently CheckedInt&lt;int&gt;, CheckedInt&lt;long long&gt; works, but not CheckedInt&lt;long&gt;.

From compiling error, seems like the code was confused on what&apos;s the next level of integer above long.

That should be platform dependent.  If long is 32bit, then the next level should be long long.  If long is 64 bit, then the  next level should be undefined.

Fixing this could simply be a check of the sizeof(long) and map it either to int or long long.

Once this is fixed, we should use GC3D types when using CheckedInt instead of int32_t and uint32_t we currently use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333994</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-13 15:49:09 -0800</bug_when>
    <thetext>CC&apos;d Benoit, who wrote the CheckedInt class and who may have some suggestions on the right way to handle this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334050</commentid>
    <comment_count>2</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-01-13 17:17:26 -0800</bug_when>
    <thetext>Could you please give me again the link to your copy of CheckedInt.h so I can see why CheckedInt&lt;long&gt; doesn&apos;t work for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334051</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-13 17:23:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/Source/WebCore/html/canvas/CheckedInt.h

To be clear, we have typedefs which match OpenGL&apos;s (&quot;GC3Dfloat&quot;, &quot;GC3Dint&quot;, etc.) and would like to be able to use those as arguments to CheckedInt, in particular &quot;GC3Dintptr&quot; which will be a 64-bit signed integer type on 64-bit platforms.

Thanks for looking into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334096</commentid>
    <comment_count>4</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-01-13 20:48:23 -0800</bug_when>
    <thetext>OK, so, at a quick glance, the most likely reason for this not working is that CheckedInt relies on template specializations of integer_type_manually_recorded_info&lt;T&gt; for types such as int32_t, int64_t, etc, and probably &apos;long&apos; doesn&apos;t match any of those types, hence it fails to compile?

One must be careful here of not breaking the case where long is the same type as one of the int32_t (etc) types. The solution is to let the general case of integer_type_manually_recorded_info&lt;T&gt; check for a few types such as long, int, etc, before bailing out and declaring the type as unsupported as it currently does. Will provide patch asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334271</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-14 06:07:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; OK, so, at a quick glance, the most likely reason for this not working is that CheckedInt relies on template specializations of integer_type_manually_recorded_info&lt;T&gt; for types such as int32_t, int64_t, etc, and probably &apos;long&apos; doesn&apos;t match any of those types, hence it fails to compile?
&gt; 
&gt; One must be careful here of not breaking the case where long is the same type as one of the int32_t (etc) types. The solution is to let the general case of integer_type_manually_recorded_info&lt;T&gt; check for a few types such as long, int, etc, before bailing out and declaring the type as unsupported as it currently does. Will provide patch asap.

Thanks for looking into this!

The compiler is complaining about &lt;T=long, U=long&gt; not supported.
If I put int, it is &lt;T=int32_t, U=int64_t&gt;, and if I put long long, it is &lt;T=int64_6, U=undefined&gt;, and both compiles fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334298</commentid>
    <comment_count>6</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-01-14 07:34:11 -0800</bug_when>
    <thetext>OK, so that confirms exactly the hypothesis of comment 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334343</commentid>
    <comment_count>7</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-01-14 09:09:06 -0800</bug_when>
    <thetext>I have made a patch against our version, see the last patch at:
https://bugzilla.mozilla.org/show_bug.cgi?id=555798

&quot;fix CheckedInt compilation for standard types&quot;
https://bug555798.bugzilla.mozilla.org/attachment.cgi?id=503866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334349</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-14 09:19:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I have made a patch against our version, see the last patch at:
&gt; https://bugzilla.mozilla.org/show_bug.cgi?id=555798
&gt; 
&gt; &quot;fix CheckedInt compilation for standard types&quot;
&gt; https://bug555798.bugzilla.mozilla.org/attachment.cgi?id=503866

Thanks a lot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334354</commentid>
    <comment_count>9</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-01-14 09:29:24 -0800</bug_when>
    <thetext>Updated, please use this newer patch:
https://bugzilla.mozilla.org/attachment.cgi?id=503872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334632</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-14 14:49:11 -0800</bug_when>
    <thetext>Mo, could you test and (unofficially) review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334652</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-14 15:08:41 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Mo, could you test and (unofficially) review this patch?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336079</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-18 14:09:16 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Updated, please use this newer patch:
&gt; https://bugzilla.mozilla.org/attachment.cgi?id=503872

Patch looks great!  I am merging this into webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336081</commentid>
    <comment_count>13</comment_count>
      <attachid>79328</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-18 14:10:13 -0800</bug_when>
    <thetext>Created attachment 79328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336084</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 14:12:43 -0800</bug_when>
    <thetext>Attachment 79328 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/html/canvas/CheckedInt.h:63:  integer_type_manually_recorded_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/html/canvas/CheckedInt.h:66:  Missing space after ,  [whitespace/comma] [3]
Source/WebCore/html/canvas/CheckedInt.h:71:  unsigned_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/html/canvas/CheckedInt.h:89:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:92:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:94:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:96:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:98:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:100:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:102:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:104:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:106:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:108:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:110:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:116:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:118:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:120:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:122:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:124:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:126:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:128:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:130:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/canvas/CheckedInt.h:133:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 23 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336102</commentid>
    <comment_count>15</comment_count>
      <attachid>79328</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-18 14:36:15 -0800</bug_when>
    <thetext>Comment on attachment 79328
Patch

We should consider moving the CheckedInt header to a directory containing third-party code so that check-webkit-style can avoid producing false positives. See https://bugs.webkit.org/show_bug.cgi?id=52636 . Recent discussion on webkit-dev indicated that the Source/WebCore/thirdparty directory should be moved out of WebCore, though. I&apos;m r+&apos;ing this despite the style failures because we need to pick up this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336111</commentid>
    <comment_count>16</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-18 14:50:50 -0800</bug_when>
    <thetext>Committed r76067: &lt;http://trac.webkit.org/changeset/76067&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79328</attachid>
            <date>2011-01-18 14:10:13 -0800</date>
            <delta_ts>2011-01-18 14:36:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52401-20110118141012.patch</filename>
            <type>text/plain</type>
            <size>8821</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MDYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMTggIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIENoZWNrZWRJbnQ8bG9uZz4gYW5kIENoZWNrZWRJbnQ8dW5zaWdu
ZWQgbG9uZz4gd29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTI0MDEKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NoZWNrZWRJbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNoZWNrZWRJbnQ6OkNoZWNrZWRJbnQpOiBNZXJnZSB3aXRoIHRoZSBwYXRj
aCBwcm92aWRlZCBieSBCZW5vaXQgSmFjb2IuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZl
ckRhdGFJbXBsKTogVXNlIENoZWNrZWRJbnQ8bG9uZz4gaW5zdGVhZCBvZiBDaGVja2VkSW50PGlu
dD4uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0
YUltcGwpOiBEaXR0by4KKwogMjAxMS0wMS0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NoZWNrZWRJbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DaGVja2VkSW50LmgJKHJldmlzaW9uIDc2MDI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2hlY2tlZEludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwy
OSArNjAsOTMgQEAgbmFtZXNwYWNlIENoZWNrZWRJbnRfaW50ZXJuYWwgewogCiBzdHJ1Y3QgdW5z
dXBwb3J0ZWRfdHlwZSB7fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGludGVnZXJf
dHlwZV9tYW51YWxseV9yZWNvcmRlZF9pbmZvCi17Ci0gICAgZW51bSB7IGlzX3N1cHBvcnRlZCA9
IDAgfTsKLSAgICB0eXBlZGVmIHVuc3VwcG9ydGVkX3R5cGUgdHdpY2VfYmlnZ2VyX3R5cGU7Ci19
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGludGVnZXJfdHlwZV9tYW51YWxseV9yZWNv
cmRlZF9pbmZvOwogCiAKLSNkZWZpbmUgQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JURURfVFlQ
RShULF90d2ljZV9iaWdnZXJfdHlwZSkgIFwKKyNkZWZpbmUgQ0hFQ0tFRElOVF9SRUdJU1RFUl9T
VVBQT1JURURfVFlQRShULF90d2ljZV9iaWdnZXJfdHlwZSxfdW5zaWduZWRfdHlwZSkgXAogdGVt
cGxhdGU8PiBzdHJ1Y3QgaW50ZWdlcl90eXBlX21hbnVhbGx5X3JlY29yZGVkX2luZm88VD4gICAg
ICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIGVudW0geyBpc19zdXBwb3J0ZWQgPSAxIH07ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIHR5cGVkZWYgX3R3aWNlX2JpZ2dlcl90eXBlIHR3
aWNlX2JpZ2dlcl90eXBlOyAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyB2b2lkIFRZUEVfTk9U
X1NVUFBPUlRFRF9CWV9DaGVja2VkSW50KCkge30gICAgICAgICAgICAgXAorICAgIHR5cGVkZWYg
X3Vuc2lnbmVkX3R5cGUgdW5zaWduZWRfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgXAorfTsK
KworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgVHdpY2UgQmln
Z2VyIFR5cGUgICBVbnNpZ25lZCBUeXBlCitDSEVDS0VESU5UX1JFR0lTVEVSX1NVUFBPUlRFRF9U
WVBFKGludDhfdCwgICBpbnQxNl90LCAgICAgICAgICAgICB1aW50OF90KQorQ0hFQ0tFRElOVF9S
RUdJU1RFUl9TVVBQT1JURURfVFlQRSh1aW50OF90LCAgdWludDE2X3QsICAgICAgICAgICAgdWlu
dDhfdCkKK0NIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVEX1RZUEUoaW50MTZfdCwgIGludDMy
X3QsICAgICAgICAgICAgIHVpbnQxNl90KQorQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JURURf
VFlQRSh1aW50MTZfdCwgdWludDMyX3QsICAgICAgICAgICAgdWludDE2X3QpCitDSEVDS0VESU5U
X1JFR0lTVEVSX1NVUFBPUlRFRF9UWVBFKGludDMyX3QsICBpbnQ2NF90LCAgICAgICAgICAgICB1
aW50MzJfdCkKK0NIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVEX1RZUEUodWludDMyX3QsIHVp
bnQ2NF90LCAgICAgICAgICAgIHVpbnQzMl90KQorQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JU
RURfVFlQRShpbnQ2NF90LCAgdW5zdXBwb3J0ZWRfdHlwZSwgICAgdWludDY0X3QpCitDSEVDS0VE
SU5UX1JFR0lTVEVSX1NVUFBPUlRFRF9UWVBFKHVpbnQ2NF90LCB1bnN1cHBvcnRlZF90eXBlLCAg
ICB1aW50NjRfdCkKKworLy8gbm93IGltcGxlbWVudCB0aGUgZmFsbGJhY2sgZm9yIHN0YW5kYXJk
IHR5cGVzIGxpa2UgaW50LCBsb25nLCAuLi4KKy8vIHRoZSBkaWZmaWN1bHR5IGlzIHRoYXQgdGhl
eSBtYXkgb3IgbWF5IG5vdCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFib3ZlIHR5cGVzLCBhbmQv
b3IKKy8vIHRvIGVhY2ggb3RoZXIuIFRoaXMgaXMgd2h5IGFueSBhdHRlbXB0IHRvIGhhbmRsZSBh
dCBvbmNlIFBSSW50OC4uLiB0eXBlcyBhbmQgc3RhbmRhcmQgdHlwZXMKKy8vIGlzIGJvdW5kIHRv
IGZhaWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlzX3N0YW5kYXJkX2ludGVnZXJf
dHlwZSB7IGVudW0geyB2YWx1ZSA9IDAgfTsgfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IGlzX3N0
YW5kYXJkX2ludGVnZXJfdHlwZTxjaGFyPiB7IGVudW0geyB2YWx1ZSA9IDEgfTsgfTsKK3RlbXBs
YXRlPD4KK3N0cnVjdCBpc19zdGFuZGFyZF9pbnRlZ2VyX3R5cGU8dW5zaWduZWQgY2hhcj4geyBl
bnVtIHsgdmFsdWUgPSAxIH07IH07Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgaXNfc3RhbmRhcmRfaW50
ZWdlcl90eXBlPHNob3J0PiB7IGVudW0geyB2YWx1ZSA9IDEgfTsgfTsKK3RlbXBsYXRlPD4KK3N0
cnVjdCBpc19zdGFuZGFyZF9pbnRlZ2VyX3R5cGU8dW5zaWduZWQgc2hvcnQ+IHsgZW51bSB7IHZh
bHVlID0gMSB9OyB9OwordGVtcGxhdGU8Pgorc3RydWN0IGlzX3N0YW5kYXJkX2ludGVnZXJfdHlw
ZTxpbnQ+IHsgZW51bSB7IHZhbHVlID0gMSB9OyB9OwordGVtcGxhdGU8Pgorc3RydWN0IGlzX3N0
YW5kYXJkX2ludGVnZXJfdHlwZTx1bnNpZ25lZCBpbnQ+IHsgZW51bSB7IHZhbHVlID0gMSB9OyB9
OwordGVtcGxhdGU8Pgorc3RydWN0IGlzX3N0YW5kYXJkX2ludGVnZXJfdHlwZTxsb25nPiB7IGVu
dW0geyB2YWx1ZSA9IDEgfTsgfTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBpc19zdGFuZGFyZF9pbnRl
Z2VyX3R5cGU8dW5zaWduZWQgbG9uZz4geyBlbnVtIHsgdmFsdWUgPSAxIH07IH07Cit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgaXNfc3RhbmRhcmRfaW50ZWdlcl90eXBlPGxvbmcgbG9uZz4geyBlbnVtIHsg
dmFsdWUgPSAxIH07IH07Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgaXNfc3RhbmRhcmRfaW50ZWdlcl90
eXBlPHVuc2lnbmVkIGxvbmcgbG9uZz4geyBlbnVtIHsgdmFsdWUgPSAxIH07IH07CisKK3RlbXBs
YXRlPGludCBzaXplLCBib29sIGlzX3NpZ25lZD4KK3N0cnVjdCBleHBsaWNpdGx5X3NpemVkX2lu
dGVnZXJfdHlwZSB7fTsKKwordGVtcGxhdGU8Pgorc3RydWN0IGV4cGxpY2l0bHlfc2l6ZWRfaW50
ZWdlcl90eXBlPDEsIHRydWU+IHsgdHlwZWRlZiBpbnQ4X3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4K
K3N0cnVjdCBleHBsaWNpdGx5X3NpemVkX2ludGVnZXJfdHlwZTwxLCBmYWxzZT4geyB0eXBlZGVm
IHVpbnQ4X3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBleHBsaWNpdGx5X3NpemVkX2lu
dGVnZXJfdHlwZTwyLCB0cnVlPiB7IHR5cGVkZWYgaW50MTZfdCB0eXBlOyB9OwordGVtcGxhdGU8
Pgorc3RydWN0IGV4cGxpY2l0bHlfc2l6ZWRfaW50ZWdlcl90eXBlPDIsIGZhbHNlPiB7IHR5cGVk
ZWYgdWludDE2X3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBleHBsaWNpdGx5X3NpemVk
X2ludGVnZXJfdHlwZTw0LCB0cnVlPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxh
dGU8Pgorc3RydWN0IGV4cGxpY2l0bHlfc2l6ZWRfaW50ZWdlcl90eXBlPDQsIGZhbHNlPiB7IHR5
cGVkZWYgdWludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBleHBsaWNpdGx5X3Np
emVkX2ludGVnZXJfdHlwZTw4LCB0cnVlPiB7IHR5cGVkZWYgaW50NjRfdCB0eXBlOyB9OwordGVt
cGxhdGU8Pgorc3RydWN0IGV4cGxpY2l0bHlfc2l6ZWRfaW50ZWdlcl90eXBlPDgsIGZhbHNlPiB7
IHR5cGVkZWYgdWludDY0X3QgdHlwZTsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IGludGVnZXJfdHlwZV9tYW51YWxseV9yZWNvcmRlZF9pbmZvCit7CisgICAgZW51bSB7CisgICAg
ICBpc19zdXBwb3J0ZWQgPSBpc19zdGFuZGFyZF9pbnRlZ2VyX3R5cGU8VD46OnZhbHVlLAorICAg
ICAgc2l6ZSA9IHNpemVvZihUKSwKKyAgICAgIGlzX3NpZ25lZCA9IChUKC0xKSA+IFQoMCkpID8g
MCA6IDEKKyAgICB9OworICAgIHR5cGVkZWYgdHlwZW5hbWUgZXhwbGljaXRseV9zaXplZF9pbnRl
Z2VyX3R5cGU8c2l6ZSwgaXNfc2lnbmVkPjo6dHlwZSBleHBsaWNpdF9zaXplZF90eXBlOworICAg
IHR5cGVkZWYgaW50ZWdlcl90eXBlX21hbnVhbGx5X3JlY29yZGVkX2luZm88ZXhwbGljaXRfc2l6
ZWRfdHlwZT4gYmFzZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnR3aWNlX2JpZ2dlcl90
eXBlIHR3aWNlX2JpZ2dlcl90eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6dW5zaWdu
ZWRfdHlwZSB1bnNpZ25lZF90eXBlOwogfTsKIAotQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JU
RURfVFlQRShpbnQ4X3QsICAgaW50MTZfdCkKLUNIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVE
X1RZUEUodWludDhfdCwgIHVpbnQxNl90KQotQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JURURf
VFlQRShpbnQxNl90LCAgaW50MzJfdCkKLUNIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVEX1RZ
UEUodWludDE2X3QsIHVpbnQzMl90KQotQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JURURfVFlQ
RShpbnQzMl90LCAgaW50NjRfdCkKLUNIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVEX1RZUEUo
dWludDMyX3QsIHVpbnQ2NF90KQotQ0hFQ0tFRElOVF9SRUdJU1RFUl9TVVBQT1JURURfVFlQRShp
bnQ2NF90LCAgdW5zdXBwb3J0ZWRfdHlwZSkKLUNIRUNLRURJTlRfUkVHSVNURVJfU1VQUE9SVEVE
X1RZUEUodWludDY0X3QsIHVuc3VwcG9ydGVkX3R5cGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBi
b29sIGlzX3N1cHBvcnRlZCA9IGludGVnZXJfdHlwZV9tYW51YWxseV9yZWNvcmRlZF9pbmZvPFQ+
Ojppc19zdXBwb3J0ZWQ+CitzdHJ1Y3QgVFlQRV9OT1RfU1VQUE9SVEVEX0JZX0NoZWNrZWRJbnQg
e307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVFlQRV9OT1RfU1VQUE9SVEVEX0JZ
X0NoZWNrZWRJbnQ8VCwgdHJ1ZT4geyBzdGF0aWMgdm9pZCBydW4oKSB7fSB9OwogCiAKIC8qKiog
U3RlcCAyOiByZWNvcmQgc29tZSBpbmZvIGFib3V0IGEgZ2l2ZW4gaW50ZWdlciB0eXBlLApAQCAt
MzQ4LDggKzQxMiw3IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAg
IENoZWNrZWRJbnQoY29uc3QgVSYgdmFsdWUsIGJvb2wgaXNWYWxpZCkgOiBtVmFsdWUodmFsdWUp
LCBtSXNWYWxpZChpc1ZhbGlkKQogICAgIHsKLSAgICAgICAgQ2hlY2tlZEludF9pbnRlcm5hbDo6
aW50ZWdlcl90eXBlX21hbnVhbGx5X3JlY29yZGVkX2luZm88VD4KLSAgICAgICAgICAgIDo6VFlQ
RV9OT1RfU1VQUE9SVEVEX0JZX0NoZWNrZWRJbnQoKTsKKyAgICAgICAgQ2hlY2tlZEludF9pbnRl
cm5hbDo6VFlQRV9OT1RfU1VQUE9SVEVEX0JZX0NoZWNrZWRJbnQ8VD46OnJ1bigpOwogICAgIH0K
IAogcHVibGljOgpAQCAtMzY2LDE1ICs0MjksMTMgQEAgcHVibGljOgogICAgICAgICA6IG1WYWx1
ZSh2YWx1ZSksCiAgICAgICAgICAgbUlzVmFsaWQoQ2hlY2tlZEludF9pbnRlcm5hbDo6aXNfaW5f
cmFuZ2U8VD4odmFsdWUpKQogICAgIHsKLSAgICAgICAgQ2hlY2tlZEludF9pbnRlcm5hbDo6aW50
ZWdlcl90eXBlX21hbnVhbGx5X3JlY29yZGVkX2luZm88VD4KLSAgICAgICAgICAgIDo6VFlQRV9O
T1RfU1VQUE9SVEVEX0JZX0NoZWNrZWRJbnQoKTsKKyAgICAgICAgQ2hlY2tlZEludF9pbnRlcm5h
bDo6VFlQRV9OT1RfU1VQUE9SVEVEX0JZX0NoZWNrZWRJbnQ8VD46OnJ1bigpOwogICAgIH0KIAog
ICAgIC8qKiBDb25zdHJ1Y3RzIGEgdmFsaWQgY2hlY2tlZCBpbnRlZ2VyIHdpdGggdW5pbml0aWFs
aXplZCB2YWx1ZSAqLwogICAgIENoZWNrZWRJbnQoKSA6IG1Jc1ZhbGlkKDEpCiAgICAgewotICAg
ICAgICBDaGVja2VkSW50X2ludGVybmFsOjppbnRlZ2VyX3R5cGVfbWFudWFsbHlfcmVjb3JkZWRf
aW5mbzxUPgotICAgICAgICAgICAgOjpUWVBFX05PVF9TVVBQT1JURURfQllfQ2hlY2tlZEludCgp
OworICAgICAgICBDaGVja2VkSW50X2ludGVybmFsOjpUWVBFX05PVF9TVVBQT1JURURfQllfQ2hl
Y2tlZEludDxUPjo6cnVuKCk7CiAgICAgfQogCiAgICAgLyoqIFxyZXR1cm5zIHRoZSBhY3R1YWwg
dmFsdWUgKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5j
cHAJKHJldmlzaW9uIDc2MDI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw5IEBAIGJvb2wgV2ViR0xCdWZm
ZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGFJbXAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKGFycmF5ICYmIGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgQ2hlY2tlZEludDxpbnQzMl90PiBj
aGVja2VkT2Zmc2V0KGJ5dGVPZmZzZXQpOwotICAgICAgICBDaGVja2VkSW50PGludDMyX3Q+IGNo
ZWNrZWRMZW5ndGgoYnl0ZUxlbmd0aCk7Ci0gICAgICAgIENoZWNrZWRJbnQ8aW50MzJfdD4gY2hl
Y2tlZE1heCA9IGNoZWNrZWRPZmZzZXQgKyBjaGVja2VkTGVuZ3RoOworICAgICAgICBDaGVja2Vk
SW50PEdDM0RpbnRwdHI+IGNoZWNrZWRPZmZzZXQoYnl0ZU9mZnNldCk7CisgICAgICAgIENoZWNr
ZWRJbnQ8R0MzRHNpemVpcHRyPiBjaGVja2VkTGVuZ3RoKGJ5dGVMZW5ndGgpOworICAgICAgICBD
aGVja2VkSW50PEdDM0RpbnRwdHI+IGNoZWNrZWRNYXggPSBjaGVja2VkT2Zmc2V0ICsgY2hlY2tl
ZExlbmd0aDsKICAgICAgICAgaWYgKCFjaGVja2VkTWF4LnZhbGlkKCkgfHwgY2hlY2tlZE1heC52
YWx1ZSgpID4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJyYXktPmJ5dGVMZW5ndGgoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTI0LDExICsxMjQsMTEgQEAgYm9vbCBX
ZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0YQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoYnl0ZUxlbmd0aCkgewotICAgICAgICBDaGVja2VkSW50PGludDMyX3Q+IGNo
ZWNrZWRCdWZmZXJPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgQ2hlY2tlZEludDxpbnQzMl90PiBj
aGVja2VkQXJyYXlPZmZzZXQoYXJyYXlCeXRlT2Zmc2V0KTsKLSAgICAgICAgQ2hlY2tlZEludDxp
bnQzMl90PiBjaGVja2VkTGVuZ3RoKGJ5dGVMZW5ndGgpOwotICAgICAgICBDaGVja2VkSW50PGlu
dDMyX3Q+IGNoZWNrZWRBcnJheU1heCA9IGNoZWNrZWRBcnJheU9mZnNldCArIGNoZWNrZWRMZW5n
dGg7Ci0gICAgICAgIENoZWNrZWRJbnQ8aW50MzJfdD4gY2hlY2tlZEJ1ZmZlck1heCA9IGNoZWNr
ZWRCdWZmZXJPZmZzZXQgKyBjaGVja2VkTGVuZ3RoOworICAgICAgICBDaGVja2VkSW50PEdDM0Rp
bnRwdHI+IGNoZWNrZWRCdWZmZXJPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgQ2hlY2tlZEludDxH
QzNEaW50cHRyPiBjaGVja2VkQXJyYXlPZmZzZXQoYXJyYXlCeXRlT2Zmc2V0KTsKKyAgICAgICAg
Q2hlY2tlZEludDxHQzNEc2l6ZWlwdHI+IGNoZWNrZWRMZW5ndGgoYnl0ZUxlbmd0aCk7CisgICAg
ICAgIENoZWNrZWRJbnQ8R0MzRGludHB0cj4gY2hlY2tlZEFycmF5TWF4ID0gY2hlY2tlZEFycmF5
T2Zmc2V0ICsgY2hlY2tlZExlbmd0aDsKKyAgICAgICAgQ2hlY2tlZEludDxHQzNEaW50cHRyPiBj
aGVja2VkQnVmZmVyTWF4ID0gY2hlY2tlZEJ1ZmZlck9mZnNldCArIGNoZWNrZWRMZW5ndGg7CiAg
ICAgICAgIGlmICghY2hlY2tlZEFycmF5TWF4LnZhbGlkKCkgfHwgY2hlY2tlZEFycmF5TWF4LnZh
bHVlKCkgPiBzdGF0aWNfY2FzdDxpbnQzMl90PihhcnJheS0+Ynl0ZUxlbmd0aCgpKSB8fCAhY2hl
Y2tlZEJ1ZmZlck1heC52YWxpZCgpIHx8IGNoZWNrZWRCdWZmZXJNYXgudmFsdWUoKSA+IG1fYnl0
ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Cg==
</data>
<flag name="review"
          id="70739"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>