<?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>42272</bug_id>
          
          <creation_ts>2010-07-14 11:01:00 -0700</creation_ts>
          <short_desc>Canvas: Fast-path for assigning the same color string as before to fillStyle or strokeStyle</short_desc>
          <delta_ts>2010-07-14 12:33:37 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>eric</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251290</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 11:01:00 -0700</bug_when>
    <thetext>When assigning a color string to fillStyle or strokeStyle, we take a detour via a CanvasStyle object.

We could add an early return fast-path when assigning the same string as before that does the check without creating a CanvasStyle object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251295</commentid>
    <comment_count>1</comment_count>
      <attachid>61541</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 11:07:35 -0700</bug_when>
    <thetext>Created attachment 61541
Proposed patch

Benchmarking with Hixie&apos;s fillRect video test:
http://hixie.ch/tests/adhoc/perf/video/002.html

BEFORE:

Elapsed wall-clock time: 853ms (ideal: 640ms).
Elapsed non-idle time: 213ms (ideal: 0ms).
Speed: 17.58fps (ideal: 25.00fps).

AFTER:

Elapsed wall-clock time: 819ms (ideal: 640ms).
Elapsed non-idle time: 179ms (ideal: 0ms).
Speed: 18.32fps (ideal: 25.00fps).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251298</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-14 11:18:36 -0700</bug_when>
    <thetext>Attachment 61541 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3548050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251304</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 11:22:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 61541 [details] did not build on mac:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/3548050

cc1plus: warnings being treated as errors
/Users/eseidel/Projects/MacEWS/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp:54: warning: unused parameter &apos;exec&apos;
distcc[13899] ERROR: compile /Users/eseidel/Projects/MacEWS/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp on localhost failed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251313</commentid>
    <comment_count>4</comment_count>
      <attachid>61546</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 11:30:19 -0700</bug_when>
    <thetext>Created attachment 61546
Proposed patch v2

Less kludgy version - since assigning an empty string to a CanvasRenderingContext2D property has no effect we don&apos;t need the bools in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251350</commentid>
    <comment_count>5</comment_count>
      <attachid>61546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-14 12:19:25 -0700</bug_when>
    <thetext>Comment on attachment 61546
Proposed patch v2

&gt;  JSValue JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
&gt;  {
&gt;      CanvasRenderingContext2D* context = static_cast&lt;CanvasRenderingContext2D*&gt;(impl());
&gt; +
&gt;      return toJS(exec, context-&gt;strokeStyle());        
&gt;  }

Stray change here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251361</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-14 12:33:37 -0700</bug_when>
    <thetext>Committed r63344: &lt;http://trac.webkit.org/changeset/63344&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61541</attachid>
            <date>2010-07-14 11:07:35 -0700</date>
            <delta_ts>2010-07-14 11:30:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-42272.diff</filename>
            <type>text/plain</type>
            <size>5975</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzdlMWM1Ni4uZGMzNzRhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNy0xNCAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbnZhczogRmFzdC1wYXRoIGZvciBhc3NpZ25pbmcgdGhl
IHNhbWUgY29sb3Igc3RyaW5nIGFzIGJlZm9yZSB0byBmaWxsU3R5bGUgb3Igc3Ryb2tlU3R5bGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjcyCisK
KyAgICAgICAgQWx3YXlzIHJvdXRlIGFzc2lnbm1lbnQgb2YgY29sb3Igc3RyaW5ncyB2aWEgc2V0
RmlsbENvbG9yKCkgb3Igc2V0U3Ryb2tlQ29sb3IoKQorICAgICAgICB3aGVyZSB3ZSBjYW4gY2hl
Y2sgaXQgYWdhaW5zdCB0aGUgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybiBlYXJseSBpZiBpdCdz
IHRoZSBzYW1lLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJv
a2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpT
dGF0ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldEZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMC0wNy0xNCAgTWFyY3VzIEJ1bGFjaCAgPGJ1
bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcAppbmRleCA5YjNmNzlmLi45MDQyMDAwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApA
QCAtNTMsOCArNTMsNiBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgQ2Fu
dmFzU3R5bGUqIHN0eWxlKQogCiBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gdG9IVE1M
Q2FudmFzU3R5bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmICh2
YWx1ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGU6OmNyZWF0ZSh1c3Ry
aW5nVG9TdHJpbmcoYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKSkpOwogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KHZhbHVlKTsKQEAgLTY4LDEyICs2NiwxNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gdG9IVE1MQ2FudmFzU3R5bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7CisK
ICAgICByZXR1cm4gdG9KUyhleGVjLCBjb250ZXh0LT5zdHJva2VTdHlsZSgpKTsgICAgICAgIAog
fQogCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1w
bCgpKTsKKyAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcih1c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKHRv
SFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CiB9CiAKQEAgLTg2LDYgKzg5LDEwIEBAIEpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+
KGltcGwoKSk7CisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY29udGV4dC0+c2V0RmlsbFN0eWxlKHRv
SFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjMWIyMTQyLi5mYmQ2OTEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCkBAIC0xMjAsNyArMTIwLDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJl
c2V0KCkKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoKQotICAg
IDogbV9zdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKENvbG9yOjpibGFjaykpCisgICAg
OiBtX2hhc1VucGFyc2VkU3Ryb2tlQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1VucGFyc2VkRmls
bENvbG9yKGZhbHNlKQorICAgICwgbV9zdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKENv
bG9yOjpibGFjaykpCiAgICAgLCBtX2ZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKENvbG9y
OjpibGFjaykpCiAgICAgLCBtX2xpbmVXaWR0aCgxKQogICAgICwgbV9saW5lQ2FwKEJ1dHRDYXAp
CkBAIC0xODcsNiArMTg5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0
cm9rZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogICAgIGlmICghYykKICAg
ICAgICAgcmV0dXJuOwogICAgIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+YXBwbHlTdHJva2VDb2xv
cihjKTsKKyAgICBzdGF0ZSgpLm1faGFzVW5wYXJzZWRTdHJva2VDb2xvciA9IGZhbHNlOwogfQog
CiBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoKSBjb25z
dApAQCAtMjE0LDYgKzIxNyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRG
aWxsU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiAgICAgaWYgKCFjKQogICAg
ICAgICByZXR1cm47CiAgICAgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+YXBwbHlGaWxsQ29sb3IoYyk7
CisgICAgc3RhdGUoKS5tX2hhc1VucGFyc2VkRmlsbENvbG9yID0gZmFsc2U7CiB9CiAKIGZsb2F0
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bGluZVdpZHRoKCkgY29uc3QKQEAgLTQ4NCw3ICs0
ODgsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFRyYW5zZm9ybShmbG9h
dCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG8KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7CisgICAgaWYg
KHN0YXRlKCkubV9oYXNVbnBhcnNlZFN0cm9rZUNvbG9yICYmIGNvbG9yID09IHN0YXRlKCkubV91
bnBhcnNlZFN0cm9rZUNvbG9yKQorICAgICAgICByZXR1cm47CiAgICAgc2V0U3Ryb2tlU3R5bGUo
Q2FudmFzU3R5bGU6OmNyZWF0ZShjb2xvcikpOworICAgIHN0YXRlKCkubV91bnBhcnNlZFN0cm9r
ZUNvbG9yID0gY29sb3I7CisgICAgc3RhdGUoKS5tX2hhc1VucGFyc2VkU3Ryb2tlQ29sb3IgPSB0
cnVlOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3Io
ZmxvYXQgZ3JheUxldmVsKQpAQCAtNTE0LDcgKzUyMiwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxv
YXQgawogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0
IFN0cmluZyYgY29sb3IpCiB7CisgICAgaWYgKHN0YXRlKCkubV9oYXNVbnBhcnNlZEZpbGxDb2xv
ciAmJiBjb2xvciA9PSBzdGF0ZSgpLm1fdW5wYXJzZWRGaWxsQ29sb3IpCisgICAgICAgIHJldHVy
bjsKICAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZShjb2xvcikpOworICAgIHN0
YXRlKCkubV91bnBhcnNlZEZpbGxDb2xvciA9IGNvbG9yOworICAgIHN0YXRlKCkubV9oYXNVbnBh
cnNlZEZpbGxDb2xvciA9IHRydWU7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggNDNmM2IzNS4uZTUyOWQwZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yMTQs
NiArMjE0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RydWN0IFN0YXRlIHsK
ICAgICAgICAgICAgIFN0YXRlKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgbV9o
YXNVbnBhcnNlZFN0cm9rZUNvbG9yOworICAgICAgICAgICAgYm9vbCBtX2hhc1VucGFyc2VkRmls
bENvbG9yOworICAgICAgICAgICAgU3RyaW5nIG1fdW5wYXJzZWRTdHJva2VDb2xvcjsKKyAgICAg
ICAgICAgIFN0cmluZyBtX3VucGFyc2VkRmlsbENvbG9yOwogICAgICAgICAgICAgUmVmUHRyPENh
bnZhc1N0eWxlPiBtX3N0cm9rZVN0eWxlOwogICAgICAgICAgICAgUmVmUHRyPENhbnZhc1N0eWxl
PiBtX2ZpbGxTdHlsZTsKICAgICAgICAgICAgIGZsb2F0IG1fbGluZVdpZHRoOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61546</attachid>
            <date>2010-07-14 11:30:19 -0700</date>
            <delta_ts>2010-07-14 12:19:25 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-42272-v2.diff</filename>
            <type>text/plain</type>
            <size>5457</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzdlMWM1Ni4uZGMzNzRhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNy0xNCAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbnZhczogRmFzdC1wYXRoIGZvciBhc3NpZ25pbmcgdGhl
IHNhbWUgY29sb3Igc3RyaW5nIGFzIGJlZm9yZSB0byBmaWxsU3R5bGUgb3Igc3Ryb2tlU3R5bGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjcyCisK
KyAgICAgICAgQWx3YXlzIHJvdXRlIGFzc2lnbm1lbnQgb2YgY29sb3Igc3RyaW5ncyB2aWEgc2V0
RmlsbENvbG9yKCkgb3Igc2V0U3Ryb2tlQ29sb3IoKQorICAgICAgICB3aGVyZSB3ZSBjYW4gY2hl
Y2sgaXQgYWdhaW5zdCB0aGUgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybiBlYXJseSBpZiBpdCdz
IHRoZSBzYW1lLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJv
a2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpT
dGF0ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldEZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMC0wNy0xNCAgTWFyY3VzIEJ1bGFjaCAgPGJ1
bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcAppbmRleCA5YjNmNzlmLi5iZDE0NzAzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApA
QCAtNTEsMTAgKzUxLDggQEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIENh
bnZhc1N0eWxlKiBzdHlsZSkKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3R5bGUtPmNvbG9y
KCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gdG9IVE1MQ2FudmFzU3R5
bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZTo6
Y3JlYXRlKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpKSk7CiAg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwpAQCAtNjgsMTIgKzY2LDE3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPENhbnZhc1N0eWxlPiB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJv
a2VTdHlsZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4o
aW1wbCgpKTsKKwogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbnRleHQtPnN0cm9rZVN0eWxlKCkp
OyAgICAgICAgCiB9CiAKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9r
ZVN0eWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQqPihpbXBsKCkpOworICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZh
bHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY29udGV4dC0+c2V0U3Ry
b2tlU3R5bGUodG9IVE1MQ2FudmFzU3R5bGUoZXhlYywgdmFsdWUpKTsKIH0KIApAQCAtODYsNiAr
ODksMTAgQEAgSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dEZpbGxTdHlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKj4oaW1wbCgpKTsKKyAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1RvU3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjb250ZXh0LT5zZXRG
aWxsU3R5bGUodG9IVE1MQ2FudmFzU3R5bGUoZXhlYywgdmFsdWUpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGMxYjIx
NDIuLjQ1MWRjNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiAg
ICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAgICAgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5h
cHBseVN0cm9rZUNvbG9yKGMpOworICAgIHN0YXRlKCkubV91bnBhcnNlZFN0cm9rZUNvbG9yID0g
U3RyaW5nKCk7CiB9CiAKIENhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGxTdHlsZSgpIGNvbnN0CkBAIC0yMTQsNiArMjE1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKICAg
ICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBs
eUZpbGxDb2xvcihjKTsKKyAgICBzdGF0ZSgpLm1fdW5wYXJzZWRGaWxsQ29sb3IgPSBTdHJpbmco
KTsKIH0KIAogZmxvYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpsaW5lV2lkdGgoKSBjb25z
dApAQCAtNDg0LDcgKzQ4NiwxMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
VHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsbwogCiB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xv
cikKIHsKKyAgICBpZiAoY29sb3IgPT0gc3RhdGUoKS5tX3VucGFyc2VkU3Ryb2tlQ29sb3IpCisg
ICAgICAgIHJldHVybjsKICAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKGNv
bG9yKSk7CisgICAgc3RhdGUoKS5tX3VucGFyc2VkU3Ryb2tlQ29sb3IgPSBjb2xvcjsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlM
ZXZlbCkKQEAgLTUxNCw3ICs1MTksMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFN0cm9rZUNvbG9yKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGsKIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNv
bG9yKQogeworICAgIGlmIChjb2xvciA9PSBzdGF0ZSgpLm1fdW5wYXJzZWRGaWxsQ29sb3IpCisg
ICAgICAgIHJldHVybjsKICAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZShjb2xv
cikpOworICAgIHN0YXRlKCkubV91bnBhcnNlZEZpbGxDb2xvciA9IGNvbG9yOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZlbCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4
IDQzZjNiMzUuLjJlYWM4OGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtMjE0LDYgKzIxNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgICAgIFN0YXRlKCk7CiAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFN0cmluZyBtX3VucGFyc2VkU3Ryb2tlQ29sb3I7CisgICAgICAgICAg
ICBTdHJpbmcgbV91bnBhcnNlZEZpbGxDb2xvcjsKICAgICAgICAgICAgIFJlZlB0cjxDYW52YXNT
dHlsZT4gbV9zdHJva2VTdHlsZTsKICAgICAgICAgICAgIFJlZlB0cjxDYW52YXNTdHlsZT4gbV9m
aWxsU3R5bGU7CiAgICAgICAgICAgICBmbG9hdCBtX2xpbmVXaWR0aDsK
</data>
<flag name="review"
          id="49591"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>