<?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>28067</bug_id>
          
          <creation_ts>2009-08-07 07:32:20 -0700</creation_ts>
          <short_desc>TransformationMatrix should have rectToRect convenience function</short_desc>
          <delta_ts>2009-08-07 12:54:44 -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>WebCore Misc.</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="Adam Treat">manyoso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137868</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 07:32:20 -0700</bug_when>
    <thetext>The following patch adds rectToRect convenience function which returns the TransformationMatrix which maps the &apos;from&apos; rectangle to the &apos;to&apos; rectangle.

No tests as this would require binding the method to js and since it is static that doesn&apos;t seem possible.  Please check the math.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137871</commentid>
    <comment_count>1</comment_count>
      <attachid>34271</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 07:33:44 -0700</bug_when>
    <thetext>Created attachment 34271
Adds method rectToRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137879</commentid>
    <comment_count>2</comment_count>
      <attachid>34271</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 08:05:50 -0700</bug_when>
    <thetext>Comment on attachment 34271
Adds method rectToRect

Does this have the desirable behavior when from.width() or from.height() is 0?

This does not match the pattern of other functions that manipulate the matrix. For example, we don&apos;t have a function to return the identity matrix. Instead we have a setter, makeIdentity(). Probably this should be makeRectToRect() or makeIdentity() should be changed.

We don&apos;t have any other static member functions to create new matrices. And in classes where we do have such functions we normally use the word &quot;create&quot; in the name of the function.

Seems OK to add it.

I&apos;m going to say r=me, but I think the class&apos;s interface is a little weak and getting a little weaker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137880</commentid>
    <comment_count>3</comment_count>
      <attachid>34272</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 08:11:35 -0700</bug_when>
    <thetext>Created attachment 34272
Adds asserts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137881</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 08:14:39 -0700</bug_when>
    <thetext>makeRectToRect is ugly imo.  In this case, we want to create a transform from scratch, not modify an existing one.  I guess we could make a new constructor that takes to rects, but that seems ugly too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137894</commentid>
    <comment_count>5</comment_count>
      <attachid>34272</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 08:34:41 -0700</bug_when>
    <thetext>Comment on attachment 34272
Adds asserts

I think we should deploy this in at least one place to make sure it works and is tested.  I think this patch is OK as is, but I&apos;d rather see it used in at least one of the places where we already do this by hand.  For example, the SVG viewport code does this kind of thing.

SVGPaintServerGradient:
    TransformationMatrix matrix;
    if (gradientServer-&gt;boundingBoxMode()) {
        matrix.translate(maskBBox.x(), maskBBox.y());
        matrix.scaleNonUniform(maskBBox.width(), maskBBox.height());
    }

TransformationMatrix SVGPreserveAspectRatio::getCTM(double logicX, double logicY,

There are many other examples in the code.  Not all of them would need to be deployed to for this to be tested. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137898</commentid>
    <comment_count>6</comment_count>
      <attachid>34272</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-07 08:40:40 -0700</bug_when>
    <thetext>Comment on attachment 34272
Adds asserts

No reason to ASSERT(!to.isEmpty()), but from is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137902</commentid>
    <comment_count>7</comment_count>
      <attachid>34279</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 08:45:15 -0700</bug_when>
    <thetext>Created attachment 34279
Fix assert as pointed out by staikos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137905</commentid>
    <comment_count>8</comment_count>
      <attachid>34279</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-07 08:47:45 -0700</bug_when>
    <thetext>Comment on attachment 34279
Fix assert as pointed out by staikos

Patch on its own is fine now.  Would be a good idea to follow up with a usage somewhere as Eric pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137909</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 08:52:42 -0700</bug_when>
    <thetext>Landed with r46893.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137987</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 11:14:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; makeRectToRect is ugly imo.  In this case, we want to create a transform from
&gt; scratch, not modify an existing one.

OK, that addresses one of my comments.

What about the comment that we normally use the name &quot;create&quot; in all of our named constructor names?

And what about changing makeIdentity?

It seems like you responded to one part of the comment and didn&apos;t address the rest. I&apos;d really like to hear your thoughts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137996</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-08-07 11:28:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #4)
&gt; &gt; makeRectToRect is ugly imo.  In this case, we want to create a transform from
&gt; &gt; scratch, not modify an existing one.
&gt; 
&gt; OK, that addresses one of my comments.
&gt; 
&gt; What about the comment that we normally use the name &quot;create&quot; in all of our
&gt; named constructor names?
&gt; 
&gt; And what about changing makeIdentity?
&gt; 
&gt; It seems like you responded to one part of the comment and didn&apos;t address the
&gt; rest. I&apos;d really like to hear your thoughts.

Ah, sorry Darin.  My eyes missed the &quot;create&quot; comment.  I can certainly change it to &apos;createRectToRect&apos;, but I&apos;ve noticed that other implementations use the &apos;rectToRect&apos; naming pattern or &apos;quadToQuad&apos;.  This is true of Qt&apos;s API and OpenVG API for instance.  Given that we already use such substandard naming patterns for consistency with other standard API&apos;s (getCTM and concatCTM come to mind... *ugly*) I&apos;m not sure what is best.  &apos;createRectToRect&apos; seems good to me, but if we do that then I think we should change &apos;getCTM&apos; and &apos;concatCTM&apos;.  Better names are better names :)

As for changing &apos;makeIdentity&apos; I had looked at this, but forgot to comment.  If you want to create a new identity TransformationMatrix there is no reason to use &apos;makeIdentity&apos; as the default ctor returns an identity matrix.  The only time someone would use &apos;makeIdentity&apos; is if you wanted to reset an existing matrix.  To me, makeIdentity is strictly not necessary and should be private.  matrix = TransformationMatrix() accomplishes the same.  I can change this and refactor parts that use &apos;makeIdentity&apos; if you like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138062</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 12:54:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Ah, sorry Darin.  My eyes missed the &quot;create&quot; comment.  I can certainly change
&gt; it to &apos;createRectToRect&apos;, but I&apos;ve noticed that other implementations use the
&gt; &apos;rectToRect&apos; naming pattern or &apos;quadToQuad&apos;.  This is true of Qt&apos;s API and
&gt; OpenVG API for instance.  Given that we already use such substandard naming
&gt; patterns for consistency with other standard API&apos;s (getCTM and concatCTM come
&gt; to mind... *ugly*) I&apos;m not sure what is best.  &apos;createRectToRect&apos; seems good to
&gt; me, but if we do that then I think we should change &apos;getCTM&apos; and &apos;concatCTM&apos;. 
&gt; Better names are better names :)

Yes, I think this class is currently not using good names across the board and is worth improving.

It seems a shame that this operation is unique at this point. The only named constructor in the class. But I guess we&apos;ve discussed it sufficiently.

&gt; As for changing &apos;makeIdentity&apos; I had looked at this, but forgot to comment.  If
&gt; you want to create a new identity TransformationMatrix there is no reason to
&gt; use &apos;makeIdentity&apos; as the default ctor returns an identity matrix.  The only
&gt; time someone would use &apos;makeIdentity&apos; is if you wanted to reset an existing
&gt; matrix.  To me, makeIdentity is strictly not necessary and should be private. 
&gt; matrix = TransformationMatrix() accomplishes the same.  I can change this and
&gt; refactor parts that use &apos;makeIdentity&apos; if you like?

I&apos;m not sure it would be an improvement. I guess we can just leave it alone for now. The class&apos;s interface seems a little weak at the moment but I don&apos;t see an obvious change that will make things better.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34271</attachid>
            <date>2009-08-07 07:33:44 -0700</date>
            <delta_ts>2009-08-07 08:11:35 -0700</delta_ts>
            <desc>Adds method rectToRect</desc>
            <filename>28067.patch</filename>
            <type>text/plain</type>
            <size>2676</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTg3MTI1NS4uODgyNDZkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wOC0wNyAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWN0VG9SZWN0IGNvbnZlbmllbmNlIGZ1bmN0aW9u
IHdoaWNoIHJldHVybnMgdGhlIFRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIHdoaWNoIG1h
cHMgdGhlICdmcm9tJyByZWN0YW5nbGUgdG8gdGhlICd0bycgcmVjdGFuZ2xlLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODA2NworCisgICAgICAg
IE5vIHRlc3RzIGFzIHRoaXMgd291bGQgcmVxdWlyZSBiaW5kaW5nIHRoZSBtZXRob2QgdG8ganMg
YW5kIHNpbmNlIGl0IGlzIHN0YXRpYworICAgICAgICB0aGF0IGRvZXNuJ3Qgc2VlbSBwb3NzaWJs
ZS4gIFBsZWFzZSBjaGVjayB0aGUgbWF0aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKwogMjAwOS0wOC0wNSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGEzNThhYWYuLjBk
ZmFkNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2NSw2ICs4NjYsMTUgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRv
dWJsZSBwKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb25z
dCBGbG9hdFJlY3QmIHRvKQoreworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0by53
aWR0aCgpIC8gZnJvbS53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by5oZWlnaHQoKSAvIGZyb20u
aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLngoKSAtIGZyb20u
eCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by55KCkgLSBmcm9tLnkoKSk7
Cit9CisKIC8vCiAvLyAqdGhpcyA9IG1hdCAqICp0aGlzCiAvLwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAppbmRleCAzMTQ2NjFkLi44MzcxOWQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjI1
LDYgKzIyNSw5IEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgYXBwbHlQZXJz
cGVjdGl2ZShkb3VibGUgcCk7CiAgICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4WzJdWzNdICE9IDAuMGY7IH0KIAorICAgIC8vIHJldHVybnMgYSB0cmFuc2Zv
cm1hdGlvbiB0aGF0IG1hcHMgYSByZWN0IHRvIGEgcmVjdAorICAgIHN0YXRpYyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZWN0VG9SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYp
OworCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIGlkZW50aXR5IG1hdHJpeCBpZiBpdCBpcyBub3QgaW52ZXJ0aWJsZS4K
</data>
<flag name="review"
          id="18437"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34272</attachid>
            <date>2009-08-07 08:11:35 -0700</date>
            <delta_ts>2009-08-07 08:45:15 -0700</delta_ts>
            <desc>Adds asserts</desc>
            <filename>28067.patch</filename>
            <type>text/plain</type>
            <size>2734</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTg3MTI1NS4uODgyNDZkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wOC0wNyAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWN0VG9SZWN0IGNvbnZlbmllbmNlIGZ1bmN0aW9u
IHdoaWNoIHJldHVybnMgdGhlIFRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIHdoaWNoIG1h
cHMgdGhlICdmcm9tJyByZWN0YW5nbGUgdG8gdGhlICd0bycgcmVjdGFuZ2xlLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODA2NworCisgICAgICAg
IE5vIHRlc3RzIGFzIHRoaXMgd291bGQgcmVxdWlyZSBiaW5kaW5nIHRoZSBtZXRob2QgdG8ganMg
YW5kIHNpbmNlIGl0IGlzIHN0YXRpYworICAgICAgICB0aGF0IGRvZXNuJ3Qgc2VlbSBwb3NzaWJs
ZS4gIFBsZWFzZSBjaGVjayB0aGUgbWF0aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKwogMjAwOS0wOC0wNSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGEzNThhYWYuLjVm
NjViZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2NSw2ICs4NjYsMTcgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRv
dWJsZSBwKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb25z
dCBGbG9hdFJlY3QmIHRvKQoreworICAgIEFTU0VSVCghZnJvbS5pc0VtcHR5KCkpOworICAgIEFT
U0VSVCghdG8uaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodG8u
d2lkdGgoKSAvIGZyb20ud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uaGVpZ2h0KCkgLyBmcm9t
LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by54KCkgLSBmcm9t
LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8ueSgpIC0gZnJvbS55KCkp
OworfQorCiAvLwogLy8gKnRoaXMgPSBtYXQgKiAqdGhpcwogLy8KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgKaW5kZXggMzE0NjYxZC4uODM3MTlkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTIy
NSw2ICsyMjUsOSBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGFwcGx5UGVy
c3BlY3RpdmUoZG91YmxlIHApOwogICAgIGJvb2wgaGFzUGVyc3BlY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeFsyXVszXSAhPSAwLjBmOyB9CiAKKyAgICAvLyByZXR1cm5zIGEgdHJhbnNm
b3JtYXRpb24gdGhhdCBtYXBzIGEgcmVjdCB0byBhIHJlY3QKKyAgICBzdGF0aWMgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKKwogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhv
ZCByZXR1cm5zIHRoZSBpZGVudGl0eSBtYXRyaXggaWYgaXQgaXMgbm90IGludmVydGlibGUuCg==
</data>
<flag name="review"
          id="18438"
          type_id="1"
          status="-"
          setter="staikos"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34279</attachid>
            <date>2009-08-07 08:45:15 -0700</date>
            <delta_ts>2009-08-07 08:47:44 -0700</delta_ts>
            <desc>Fix assert as pointed out by staikos</desc>
            <filename>28067.patch</filename>
            <type>text/plain</type>
            <size>2706</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTg3MTI1NS4uODgyNDZkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wOC0wNyAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWN0VG9SZWN0IGNvbnZlbmllbmNlIGZ1bmN0aW9u
IHdoaWNoIHJldHVybnMgdGhlIFRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIHdoaWNoIG1h
cHMgdGhlICdmcm9tJyByZWN0YW5nbGUgdG8gdGhlICd0bycgcmVjdGFuZ2xlLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODA2NworCisgICAgICAg
IE5vIHRlc3RzIGFzIHRoaXMgd291bGQgcmVxdWlyZSBiaW5kaW5nIHRoZSBtZXRob2QgdG8ganMg
YW5kIHNpbmNlIGl0IGlzIHN0YXRpYworICAgICAgICB0aGF0IGRvZXNuJ3Qgc2VlbSBwb3NzaWJs
ZS4gIFBsZWFzZSBjaGVjayB0aGUgbWF0aC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKwogMjAwOS0wOC0wNSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGEzNThhYWYuLjEz
ZWYyODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2NSw2ICs4NjYsMTYgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphcHBseVBlcnNwZWN0aXZlKGRv
dWJsZSBwKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb25z
dCBGbG9hdFJlY3QmIHRvKQoreworICAgIEFTU0VSVCghZnJvbS5pc0VtcHR5KCkpOworICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0by53aWR0aCgpIC8gZnJvbS53aWR0aCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0by5oZWlnaHQoKSAvIGZyb20uaGVpZ2h0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvLngoKSAtIGZyb20ueCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0by55KCkgLSBmcm9tLnkoKSk7Cit9CisKIC8vCiAvLyAqdGhpcyA9IG1hdCAq
ICp0aGlzCiAvLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCAzMTQ2NjFkLi44MzcxOWQyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjI1LDYgKzIyNSw5IEBAIHB1YmxpYzoKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgYXBwbHlQZXJzcGVjdGl2ZShkb3VibGUgcCk7CiAgICAgYm9v
bCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4WzJdWzNdICE9IDAuMGY7
IH0KIAorICAgIC8vIHJldHVybnMgYSB0cmFuc2Zvcm1hdGlvbiB0aGF0IG1hcHMgYSByZWN0IHRv
IGEgcmVjdAorICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWN0VG9SZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpOworCiAgICAgYm9vbCBpc0ludmVydGlibGUo
KSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGlkZW50aXR5IG1hdHJp
eCBpZiBpdCBpcyBub3QgaW52ZXJ0aWJsZS4K
</data>
<flag name="review"
          id="18441"
          type_id="1"
          status="+"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>