<?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>83602</bug_id>
          
          <creation_ts>2012-04-10 12:08:21 -0700</creation_ts>
          <short_desc>Use explicit casts for size_t to unsigned conversion</short_desc>
          <delta_ts>2012-04-18 11:32:03 -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>Layout and Rendering</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599469</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-10 12:08:21 -0700</bug_when>
    <thetext>Not all platforms have implicit casts from size_t to unsigned and we can&apos;t add size_t versions of the operators to FractionalLayoutUnit for all platforms as it would conflict with the unsigned versions of same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599513</commentid>
    <comment_count>1</comment_count>
      <attachid>136513</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-10 12:34:48 -0700</bug_when>
    <thetext>Created attachment 136513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600720</commentid>
    <comment_count>2</comment_count>
      <attachid>136513</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-11 16:54:44 -0700</bug_when>
    <thetext>Comment on attachment 136513
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Not all platforms have implicit casts from size_t to unsigned and we
&gt; +        can&apos;t add size_t versions of the operators to FractionalLayoutUnit for
&gt; +        all platforms as it would conflict with the unsigned versions of same.

I may not understand everything but Levi was mentioning that on some platforms, size_t and unsigned are the same type which was the issue you had. In this case, wouldn&apos;t it be easier to just #ifdef those operators on the right platforms?

We haven&apos;t done a good job at maintaining the distinction between size_t and unsigned (I have to plead guilty on this one), so I wonder how many more call sites would need to be updated? Shouldn&apos;t we reach consensus before making the code use unsigned instead of size_t (or the other way around)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600726</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-11 17:01:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 136513 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136513&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Not all platforms have implicit casts from size_t to unsigned and we
&gt; &gt; +        can&apos;t add size_t versions of the operators to FractionalLayoutUnit for
&gt; &gt; +        all platforms as it would conflict with the unsigned versions of same.
&gt; 
&gt; I may not understand everything but Levi was mentioning that on some platforms, size_t and unsigned are the same type which was the issue you had. In this case, wouldn&apos;t it be easier to just #ifdef those operators on the right platforms?

That would be the other option. 

&gt; We haven&apos;t done a good job at maintaining the distinction between size_t and unsigned (I have to plead guilty on this one), so I wonder how many more call sites would need to be updated? Shouldn&apos;t we reach consensus before making the code use unsigned instead of size_t (or the other way around)?

We only really seem to use size_t in a handful of places and there doesn&apos;t seem to be any standard way of comparing/converting size_t, int and unsigned values.

If you think it&apos;s better to add size_t versions of the methods to FractionalLayoutUnit for the platforms where it doesn&apos;t typedef to undefined I&apos;ll gladly make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600751</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-11 17:28:56 -0700</bug_when>
    <thetext>&gt; &gt; We haven&apos;t done a good job at maintaining the distinction between size_t and unsigned (I have to plead guilty on this one), so I wonder how many more call sites would need to be updated? Shouldn&apos;t we reach consensus before making the code use unsigned instead of size_t (or the other way around)?
&gt; 
&gt; We only really seem to use size_t in a handful of places and there doesn&apos;t seem to be any standard way of comparing/converting size_t, int and unsigned values.

I was talking globally over WebCore. I don&apos;t think there is any consensus on whether we should use size_t vs unsigned in the code (for iterating over Vectors a quick grep shows that it&apos;s pretty divided).

&gt; If you think it&apos;s better to add size_t versions of the methods to FractionalLayoutUnit for the platforms where it doesn&apos;t typedef to undefined I&apos;ll gladly make the change.

It really sounds less intrusive to add the overloaded functions for size_t. It&apos;s also less fragile (anyone could come before - or after - you land the final patch and break everything). I am assuming that you only need a small number of overloaded functions though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600770</commentid>
    <comment_count>5</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-11 18:01:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; It really sounds less intrusive to add the overloaded functions for size_t. It&apos;s also less fragile (anyone could come before - or after - you land the final patch and break everything). I am assuming that you only need a small number of overloaded functions though.

Sure, I was more worried about maintaining the ifdefs needed but in reality we don&apos;t add new platforms very often so it probably makes more sense to do it that way.

Thanks for your feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604324</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-17 14:04:27 -0700</bug_when>
    <thetext>In light of the difficulties involved with getting even the same platform to agree on whether size_t and unsigned are interchangeable this approach seems both safer and more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604342</commentid>
    <comment_count>7</comment_count>
      <attachid>137603</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-17 14:32:13 -0700</bug_when>
    <thetext>Created attachment 137603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604832</commentid>
    <comment_count>8</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-18 09:46:47 -0700</bug_when>
    <thetext>Any thoughts on this? I tried to make it cleaner by changing a couple of the functions to take unsigned instead of size_t, thereby reducing the number of explicit casts needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604867</commentid>
    <comment_count>9</comment_count>
      <attachid>137603</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-18 10:34:35 -0700</bug_when>
    <thetext>Comment on attachment 137603
Patch

Seams OK.  I&apos;m still surprised we need to solve this this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604869</commentid>
    <comment_count>10</comment_count>
      <attachid>137603</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-18 10:36:13 -0700</bug_when>
    <thetext>Comment on attachment 137603
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Not all platforms have implicit casts from size_t to unsigned and we
&gt; +        can&apos;t add size_t versions of the operators to FractionalLayoutUnit for
&gt; +        all platforms as it would conflict with the unsigned versions of same.

I still would think we could do this with a compile guard, like #if sizeof(unsigned) == sizeof(size_t)?  I guess sizeof isn&apos;t enough though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604875</commentid>
    <comment_count>11</comment_count>
      <attachid>137603</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-18 10:39:01 -0700</bug_when>
    <thetext>Comment on attachment 137603
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        all platforms as it would conflict with the unsigned versions of same.
&gt; 
&gt; I still would think we could do this with a compile guard, like #if sizeof(unsigned) == sizeof(size_t)?  I guess sizeof isn&apos;t enough though...

I thought so as well but no joy. Neither did checking the memory model (LLP64 vs LP64 vs 32-bit). The check builds (valgrind) where did real complication and I could not find a way around that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604877</commentid>
    <comment_count>12</comment_count>
      <attachid>137603</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-18 10:43:48 -0700</bug_when>
    <thetext>Comment on attachment 137603
Patch

We could alos come up with a blacklist of compilers and set some #define in Platform.h... That blacklist might be difficutl to come up with, but seems more long-term useful than disallowing size_t in some parts of the WebKit code. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604880</commentid>
    <comment_count>13</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-18 10:45:48 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 137603 [details])
&gt; We could alos come up with a blacklist of compilers and set some #define in Platform.h... That blacklist might be difficutl to come up with, but seems more long-term useful than disallowing size_t in some parts of the WebKit code. :)

Given the number of platforms involved that doesn&apos;t seem practical. I agree that it would be nice to allow size_ts to be used in layout code though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604881</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-18 10:48:06 -0700</bug_when>
    <thetext>We might at least add a FIXME to the FractionalLayoutUnit code noting this problem with size_t/unsigned and linking to this bug for future historians.  I&apos;m not sure how common it will be that someone will add some size_t usage in the RenderingTree and try to shave this yak.  Having quick access to this bug discussion might at least inform them of what you&apos;ve learned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604925</commentid>
    <comment_count>15</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-18 11:28:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; We might at least add a FIXME to the FractionalLayoutUnit code noting this problem with size_t/unsigned and linking to this bug for future historians.  I&apos;m not sure how common it will be that someone will add some size_t usage in the RenderingTree and try to shave this yak.  Having quick access to this bug discussion might at least inform them of what you&apos;ve learned.

Good idea. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604929</commentid>
    <comment_count>16</comment_count>
      <attachid>137603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 11:31:58 -0700</bug_when>
    <thetext>Comment on attachment 137603
Patch

Clearing flags on attachment: 137603

Committed r114537: &lt;http://trac.webkit.org/changeset/114537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604930</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 11:32:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136513</attachid>
            <date>2012-04-10 12:34:48 -0700</date>
            <delta_ts>2012-04-11 18:01:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83602-20120410123447.patch</filename>
            <type>text/plain</type>
            <size>4939</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTEwICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgZXhwbGljaXQgY2FzdHMg
Zm9yIHNpemVfdCB0byB1bnNpZ25lZCBjb252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdCBhbGwgcGxhdGZvcm1zIGhhdmUgaW1wbGljaXQg
Y2FzdHMgZnJvbSBzaXplX3QgdG8gdW5zaWduZWQgYW5kIHdlCisgICAgICAgIGNhbid0IGFkZCBz
aXplX3QgdmVyc2lvbnMgb2YgdGhlIG9wZXJhdG9ycyB0byBGcmFjdGlvbmFsTGF5b3V0VW5pdCBm
b3IKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBhcyBpdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSB1
bnNpZ25lZCB2ZXJzaW9ucyBvZiBzYW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hh
bmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkanVzdEZvckNvbHVtbnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsUGFja2luZ09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpwYWNraW5nU3Bh
Y2VCZXR3ZWVuQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbExpbmVQYWNraW5n
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVQYWNraW5nU3BhY2VCZXR3ZWVuQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnBhY2tGbGV4TGluZXMp
OgorCiAyMDEyLTA0LTEwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZCBUZXN0Tm9kZS5pZGwgdG8gcnVuLWJpbmRpbmctdGVzdHMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTEzNzMwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTE4NiwxMSArNTE4NiwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGp1c3RGb3JDb2x1bW5zKExh
eW91CiAgICAgQ29sdW1uSW5mbyogY29sSW5mbyA9IGNvbHVtbkluZm8oKTsKIAogICAgIExheW91
dFVuaXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQoKTsKLSAgICBz
aXplX3QgY29sQ291bnQgPSBjb2x1bW5Db3VudChjb2xJbmZvKTsKKyAgICB1bnNpZ25lZCBjb2xD
b3VudCA9IGNvbHVtbkNvdW50KGNvbEluZm8pOwogICAgIExheW91dFVuaXQgY29sTG9naWNhbFdp
ZHRoID0gY29sSW5mby0+ZGVzaXJlZENvbHVtbldpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjb2xM
b2dpY2FsSGVpZ2h0ID0gY29sSW5mby0+Y29sdW1uSGVpZ2h0KCk7CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvbENvdW50OyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY29sQ291bnQ7ICsraSkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBlZGdlcyBmb3IgYSBn
aXZlbiBjb2x1bW4gaW4gdGhlIGJsb2NrIHByb2dyZXNzaW9uIGRpcmVjdGlvbi4KICAgICAgICAg
TGF5b3V0UmVjdCBzbGljZVJlY3QgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBib3JkZXJCZWZv
cmUoKSArIHBhZGRpbmdCZWZvcmUoKSArIGkgKiBjb2xMb2dpY2FsSGVpZ2h0LCBjb2xMb2dpY2Fs
V2lkdGgsIGNvbExvZ2ljYWxIZWlnaHQpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAJKHJldmlzaW9uIDExMzczMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw3ICs4MTQsNyBA
QCBzdGF0aWMgTGF5b3V0VW5pdCBpbml0aWFsUGFja2luZ09mZnNldChMCiAgICAgICAgIHJldHVy
biBhdmFpbGFibGVGcmVlU3BhY2UgLyAyOwogICAgIGlmIChmbGV4UGFjayA9PSBQYWNrRGlzdHJp
YnV0ZSkgewogICAgICAgICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlID4gMCAmJiBudW1iZXJPZkNo
aWxkcmVuKQotICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZyZWVTcGFjZSAvICgyICogbnVt
YmVyT2ZDaGlsZHJlbik7CisgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRnJlZVNwYWNlIC8g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDIgKiBudW1iZXJPZkNoaWxkcmVuKTsKICAgICAgICAgaWYg
KGF2YWlsYWJsZUZyZWVTcGFjZSA8IDApCiAgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRnJl
ZVNwYWNlIC8gMjsKICAgICB9CkBAIC04MjUsOSArODI1LDkgQEAgc3RhdGljIExheW91dFVuaXQg
cGFja2luZ1NwYWNlQmV0d2VlbkNoaQogewogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAw
ICYmIG51bWJlck9mQ2hpbGRyZW4gPiAxKSB7CiAgICAgICAgIGlmIChmbGV4UGFjayA9PSBQYWNr
SnVzdGlmeSkKLSAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVGcmVlU3BhY2UgLyAobnVtYmVy
T2ZDaGlsZHJlbiAtIDEpOworICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZyZWVTcGFjZSAv
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1iZXJPZkNoaWxkcmVuIC0gMSk7CiAgICAgICAgIGlm
IChmbGV4UGFjayA9PSBQYWNrRGlzdHJpYnV0ZSkKLSAgICAgICAgICAgIHJldHVybiBhdmFpbGFi
bGVGcmVlU3BhY2UgLyBudW1iZXJPZkNoaWxkcmVuOworICAgICAgICAgICAgcmV0dXJuIGF2YWls
YWJsZUZyZWVTcGFjZSAvIHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1iZXJPZkNoaWxkcmVuKTsK
ICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05NzcsNyArOTc3LDcgQEAgc3RhdGljIExheW91
dFVuaXQgaW5pdGlhbExpbmVQYWNraW5nT2ZmcwogICAgICAgICByZXR1cm4gYXZhaWxhYmxlRnJl
ZVNwYWNlIC8gMjsKICAgICBpZiAobGluZVBhY2sgPT0gTGluZVBhY2tEaXN0cmlidXRlKSB7CiAg
ICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAwICYmIG51bWJlck9mTGluZXMpCi0gICAg
ICAgICAgICByZXR1cm4gYXZhaWxhYmxlRnJlZVNwYWNlIC8gKDIgKiBudW1iZXJPZkxpbmVzKTsK
KyAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVGcmVlU3BhY2UgLyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMiAqIG51bWJlck9mTGluZXMpOwogICAgICAgICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNl
IDwgMCkKICAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVGcmVlU3BhY2UgLyAyOwogICAgIH0K
QEAgLTk4OCw5ICs5ODgsOSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBsaW5lUGFja2luZ1NwYWNlQmV0
d2VlCiB7CiAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgbnVtYmVyT2ZMaW5lcyA+
IDEpIHsKICAgICAgICAgaWYgKGxpbmVQYWNrID09IExpbmVQYWNrSnVzdGlmeSkKLSAgICAgICAg
ICAgIHJldHVybiBhdmFpbGFibGVGcmVlU3BhY2UgLyAobnVtYmVyT2ZMaW5lcyAtIDEpOworICAg
ICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZyZWVTcGFjZSAvIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihudW1iZXJPZkxpbmVzIC0gMSk7CiAgICAgICAgIGlmIChsaW5lUGFjayA9PSBMaW5lUGFja0Rp
c3RyaWJ1dGUgfHwgbGluZVBhY2sgPT0gTGluZVBhY2tTdHJldGNoKQotICAgICAgICAgICAgcmV0
dXJuIGF2YWlsYWJsZUZyZWVTcGFjZSAvIG51bWJlck9mTGluZXM7CisgICAgICAgICAgICByZXR1
cm4gYXZhaWxhYmxlRnJlZVNwYWNlIC8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWJlck9mTGlu
ZXMpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMTIsNyArMTAxMiw3IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OnBhY2tGbGV4TGluZXMoRmwKICAgICAgICAgICAgIGFkanVzdEFs
aWdubWVudEZvckNoaWxkKGNoaWxkLCBsaW5lT2Zmc2V0KTsKIAogICAgICAgICBpZiAoc3R5bGUo
KS0+ZmxleExpbmVQYWNrKCkgPT0gTGluZVBhY2tTdHJldGNoICYmIGF2YWlsYWJsZUNyb3NzQXhp
c1NwYWNlID4gMCkKLSAgICAgICAgICAgIGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5jcm9zc0F4
aXNFeHRlbnQgKz0gYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UgLyBsaW5lQ29udGV4dHMuc2l6ZSgp
OworICAgICAgICAgICAgbGluZUNvbnRleHRzW2xpbmVOdW1iZXJdLmNyb3NzQXhpc0V4dGVudCAr
PSBhdmFpbGFibGVDcm9zc0F4aXNTcGFjZSAvIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lQ29u
dGV4dHMuc2l6ZSgpKTsKIAogICAgICAgICBsaW5lT2Zmc2V0ICs9IGxpbmVQYWNraW5nU3BhY2VC
ZXR3ZWVuQ2hpbGRyZW4oYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UsIHN0eWxlKCktPmZsZXhMaW5l
UGFjaygpLCBsaW5lQ29udGV4dHMuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137603</attachid>
            <date>2012-04-17 14:32:13 -0700</date>
            <delta_ts>2012-04-18 11:31:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83602-20120417143212.patch</filename>
            <type>text/plain</type>
            <size>6149</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2UgZXhwbGljaXQgY2FzdHMg
Zm9yIHNpemVfdCB0byB1bnNpZ25lZCBjb252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0
aW5hbGl0eS4KKworICAgICAgICBOb3QgYWxsIHBsYXRmb3JtcyBoYXZlIGltcGxpY2l0IGNhc3Rz
IGZyb20gc2l6ZV90IHRvIHVuc2lnbmVkIGFuZCB3ZQorICAgICAgICBjYW4ndCBhZGQgc2l6ZV90
IHZlcnNpb25zIG9mIHRoZSBvcGVyYXRvcnMgdG8gRnJhY3Rpb25hbExheW91dFVuaXQgZm9yCisg
ICAgICAgIGFsbCBwbGF0Zm9ybXMgYXMgaXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgdW5zaWdu
ZWQgdmVyc2lvbnMgb2Ygc2FtZS4KKworICAgICAgICBDaGFuZ2Ugc3VwcG9ydCBtZXRob2RzIHRv
IHRha2UgdW5zaWduZWQgaW5zdGVhZCBvZiBzaXplX3QgYW5kIHVzZQorICAgICAgICBleHBsaWNp
dCBjYXN0cyB3aGVuIG11bHRpcGx5aW5nIG9yIGRpdmlkaW5nIGEgRnJhY3Rpb25hbExheW91dFVu
aXQgd2l0aAorICAgICAgICBhIHNpemVfdCBhbmQgdGhlIG90aGVyIHdheSBhcm91bmQuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkanVzdEZvckNvbHVtbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsUGFja2luZ09mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpwYWNraW5nU3BhY2VCZXR3ZWVuQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbExpbmVQYWNraW5nT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OmxpbmVQYWNraW5nU3BhY2VCZXR3ZWVuQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OnBhY2tGbGV4TGluZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5b3V0
KToKKwogMjAxMi0wNC0xNyAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUm9sbG91dCByMTE0NDA0IGFzIGl0IGJyb2tlIGEgY291cGxlIG9mIGNocm9taXVtIGJ1
aWxkcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2
aXNpb24gMTE0NDI3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTE3NiwxMSArNTE3NiwxMSBAQCB2b2lkIFJlbmRlckJsb2Nr
OjphZGp1c3RGb3JDb2x1bW5zKExheW91CiAgICAgQ29sdW1uSW5mbyogY29sSW5mbyA9IGNvbHVt
bkluZm8oKTsKIAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNl
dEZvckNvbnRlbnQoKTsKLSAgICBzaXplX3QgY29sQ291bnQgPSBjb2x1bW5Db3VudChjb2xJbmZv
KTsKKyAgICB1bnNpZ25lZCBjb2xDb3VudCA9IGNvbHVtbkNvdW50KGNvbEluZm8pOwogICAgIExh
eW91dFVuaXQgY29sTG9naWNhbFdpZHRoID0gY29sSW5mby0+ZGVzaXJlZENvbHVtbldpZHRoKCk7
CiAgICAgTGF5b3V0VW5pdCBjb2xMb2dpY2FsSGVpZ2h0ID0gY29sSW5mby0+Y29sdW1uSGVpZ2h0
KCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbENvdW50OyArK2kpIHsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sQ291bnQ7ICsraSkgewogICAgICAgICAvLyBDb21w
dXRlIHRoZSBlZGdlcyBmb3IgYSBnaXZlbiBjb2x1bW4gaW4gdGhlIGJsb2NrIHByb2dyZXNzaW9u
IGRpcmVjdGlvbi4KICAgICAgICAgTGF5b3V0UmVjdCBzbGljZVJlY3QgPSBMYXlvdXRSZWN0KGxv
Z2ljYWxMZWZ0LCBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKSArIGkgKiBjb2xMb2dp
Y2FsSGVpZ2h0LCBjb2xMb2dpY2FsV2lkdGgsIGNvbExvZ2ljYWxIZWlnaHQpOwogICAgICAgICBp
ZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDExNDQyNykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwNiw3ICs4MDYsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94OjpyZXNvbHZlRmxl
eGlibGVMCiAgICAgcmV0dXJuICF0b3RhbFZpb2xhdGlvbjsKIH0KIAotc3RhdGljIExheW91dFVu
aXQgaW5pdGlhbFBhY2tpbmdPZmZzZXQoTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIEVG
bGV4UGFjayBmbGV4UGFjaywgc2l6ZV90IG51bWJlck9mQ2hpbGRyZW4pCitzdGF0aWMgTGF5b3V0
VW5pdCBpbml0aWFsUGFja2luZ09mZnNldChMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwg
RUZsZXhQYWNrIGZsZXhQYWNrLCB1bnNpZ25lZCBudW1iZXJPZkNoaWxkcmVuKQogewogICAgIGlm
IChmbGV4UGFjayA9PSBQYWNrRW5kKQogICAgICAgICByZXR1cm4gYXZhaWxhYmxlRnJlZVNwYWNl
OwpAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IGluaXRpYWxQYWNraW5nT2Zm
c2V0KEwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIExheW91dFVuaXQgcGFja2luZ1NwYWNl
QmV0d2VlbkNoaWxkcmVuKExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBFRmxleFBhY2sg
ZmxleFBhY2ssIHNpemVfdCBudW1iZXJPZkNoaWxkcmVuKQorc3RhdGljIExheW91dFVuaXQgcGFj
a2luZ1NwYWNlQmV0d2VlbkNoaWxkcmVuKExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBF
RmxleFBhY2sgZmxleFBhY2ssIHVuc2lnbmVkIG51bWJlck9mQ2hpbGRyZW4pCiB7CiAgICAgaWYg
KGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgbnVtYmVyT2ZDaGlsZHJlbiA+IDEpIHsKICAgICAg
ICAgaWYgKGZsZXhQYWNrID09IFBhY2tKdXN0aWZ5KQpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmxheW91dENvbHVtblJldmUKICAgICB9CiB9CiAKLXN0YXRpYyBM
YXlvdXRVbml0IGluaXRpYWxMaW5lUGFja2luZ09mZnNldChMYXlvdXRVbml0IGF2YWlsYWJsZUZy
ZWVTcGFjZSwgRUZsZXhMaW5lUGFjayBsaW5lUGFjaywgc2l6ZV90IG51bWJlck9mTGluZXMpCitz
dGF0aWMgTGF5b3V0VW5pdCBpbml0aWFsTGluZVBhY2tpbmdPZmZzZXQoTGF5b3V0VW5pdCBhdmFp
bGFibGVGcmVlU3BhY2UsIEVGbGV4TGluZVBhY2sgbGluZVBhY2ssIHVuc2lnbmVkIG51bWJlck9m
TGluZXMpCiB7CiAgICAgaWYgKGxpbmVQYWNrID09IExpbmVQYWNrRW5kKQogICAgICAgICByZXR1
cm4gYXZhaWxhYmxlRnJlZVNwYWNlOwpAQCAtOTg0LDcgKzk4NCw3IEBAIHN0YXRpYyBMYXlvdXRV
bml0IGluaXRpYWxMaW5lUGFja2luZ09mZnMKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIExh
eW91dFVuaXQgbGluZVBhY2tpbmdTcGFjZUJldHdlZW5DaGlsZHJlbihMYXlvdXRVbml0IGF2YWls
YWJsZUZyZWVTcGFjZSwgRUZsZXhMaW5lUGFjayBsaW5lUGFjaywgc2l6ZV90IG51bWJlck9mTGlu
ZXMpCitzdGF0aWMgTGF5b3V0VW5pdCBsaW5lUGFja2luZ1NwYWNlQmV0d2VlbkNoaWxkcmVuKExh
eW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBFRmxleExpbmVQYWNrIGxpbmVQYWNrLCB1bnNp
Z25lZCBudW1iZXJPZkxpbmVzKQogewogICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAwICYm
IG51bWJlck9mTGluZXMgPiAxKSB7CiAgICAgICAgIGlmIChsaW5lUGFjayA9PSBMaW5lUGFja0p1
c3RpZnkpCkBAIC0xMDA2LDEzICsxMDA2LDEzIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnBh
Y2tGbGV4TGluZXMoRmwKIAogICAgIFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgp
OwogICAgIExheW91dFVuaXQgbGluZU9mZnNldCA9IGluaXRpYWxMaW5lUGFja2luZ09mZnNldChh
dmFpbGFibGVDcm9zc0F4aXNTcGFjZSwgc3R5bGUoKS0+ZmxleExpbmVQYWNrKCksIGxpbmVDb250
ZXh0cy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVtYmVy
IDwgbGluZUNvbnRleHRzLnNpemUoKTsgKytsaW5lTnVtYmVyKSB7CisgICAgZm9yICh1bnNpZ25l
ZCBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IGxpbmVDb250ZXh0cy5zaXplKCk7ICsrbGlu
ZU51bWJlcikgewogICAgICAgICBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0uY3Jvc3NBeGlzT2Zm
c2V0ICs9IGxpbmVPZmZzZXQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGNoaWxkTnVtYmVyID0gMDsg
Y2hpbGROdW1iZXIgPCBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0ubnVtYmVyT2ZDaGlsZHJlbjsg
KytjaGlsZE51bWJlciwgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpCiAgICAgICAgICAgICBhZGp1
c3RBbGlnbm1lbnRGb3JDaGlsZChjaGlsZCwgbGluZU9mZnNldCk7CiAKICAgICAgICAgaWYgKHN0
eWxlKCktPmZsZXhMaW5lUGFjaygpID09IExpbmVQYWNrU3RyZXRjaCAmJiBhdmFpbGFibGVDcm9z
c0F4aXNTcGFjZSA+IDApCi0gICAgICAgICAgICBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0uY3Jv
c3NBeGlzRXh0ZW50ICs9IGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlIC8gbGluZUNvbnRleHRzLnNp
emUoKTsKKyAgICAgICAgICAgIGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5jcm9zc0F4aXNFeHRl
bnQgKz0gYXZhaWxhYmxlQ3Jvc3NBeGlzU3BhY2UgLyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGlu
ZUNvbnRleHRzLnNpemUoKSk7CiAKICAgICAgICAgbGluZU9mZnNldCArPSBsaW5lUGFja2luZ1Nw
YWNlQmV0d2VlbkNoaWxkcmVuKGF2YWlsYWJsZUNyb3NzQXhpc1NwYWNlLCBzdHlsZSgpLT5mbGV4
TGluZVBhY2soKSwgbGluZUNvbnRleHRzLnNpemUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZpc2lvbiAxMTQ0MjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NzIsOCArNDcyLDggQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5b3V0KCkKICAg
ICAgICAgc2V0SGVpZ2h0KHZpZXcoKS0+dmlld0hlaWdodCgpKTsKICAgICB9CiAKLSAgICBzaXpl
X3QgY29scyA9IGZyYW1lU2V0KCktPnRvdGFsQ29scygpOwotICAgIHNpemVfdCByb3dzID0gZnJh
bWVTZXQoKS0+dG90YWxSb3dzKCk7CisgICAgdW5zaWduZWQgY29scyA9IGZyYW1lU2V0KCktPnRv
dGFsQ29scygpOworICAgIHVuc2lnbmVkIHJvd3MgPSBmcmFtZVNldCgpLT50b3RhbFJvd3MoKTsK
IAogICAgIGlmIChtX3Jvd3MubV9zaXplcy5zaXplKCkgIT0gcm93cyB8fCBtX2NvbHMubV9zaXpl
cy5zaXplKCkgIT0gY29scykgewogICAgICAgICBtX3Jvd3MucmVzaXplKHJvd3MpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>