<?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>17214</bug_id>
          
          <creation_ts>2008-02-07 22:38:14 -0800</creation_ts>
          <short_desc>REGRESSION: Extraneous parentheses in function.toString()</short_desc>
          <delta_ts>2008-02-08 21:17:47 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://rgov.org/safaritest.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Govostes">rgovostes</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>rgovostes</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69726</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Govostes">rgovostes</who>
    <bug_when>2008-02-07 22:38:14 -0800</bug_when>
    <thetext>Witness at http://rgov.org/safaritest.html

If you write the following code:

function foo() { var x = &quot;a&quot;, y = &quot;b&quot;, z = &quot;c&quot;; } alert(foo.toString());

You&apos;ll get different results with the current shipping Safari 3:

function foo() 
{
  var x = &quot;1&quot;, y = &quot;2&quot;, z = &quot;3&quot;;
}

and the latest build (30051):


function foo() 
{
  var (x = &quot;1&quot;, y = &quot;2&quot;), z = &quot;3&quot;;
}

As you can see, it tries to add parentheses around the assignments, but this is not valid syntax. Consequently, the printed code cannot actually be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69728</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Govostes">rgovostes</who>
    <bug_when>2008-02-07 22:57:21 -0800</bug_when>
    <thetext>I added some debug info to my nodes2string.h to help trace this:

function foo()
[ScopeNode]
	{
	[VarStatementNode]
		var
		[CommaNode]
			(
			[CommaNode]
				[AssignResolveNode]
				x = 
					[StringNode]
						&quot;a&quot;
					[/StringNode]
				[/AssignResolveNode]
				, 
				[AssignResolveNode]
					y = 
					[StringNode]
						&quot;b&quot;
					[/StringNode]
				[/AssignResolveNode]
			[/CommaNode]
			), 
			[AssignResolveNode]
				z = 
				[StringNode]
					&quot;c&quot;
				[/StringNode]
			[/AssignResolveNode]
		[/CommaNode]
		;
	[/VarStatementNode]
}[/ScopeNode]

It looks like where the first faulty parenthesis is going to be added, the needsParens check in SourceStream::operator&lt;&lt;(const Node* n) is true because

1. m_precedence = 17
2. n-&gt;precedence() = 18

In other words, it&apos;s because the CommaNode&apos;s precedence is greater than the AssignResolveNode.

Someone please double check this for me but I think the function should be rewritten as:

-----
 SourceStream&amp; SourceStream::operator&lt;&lt;(const Node* n)
    {
        if (!n) {
            m_precedence = PrecExpression;
            return *this;
        }
        
        bool needParens = (m_precedence &lt; PrecAssignment &amp;&amp; n-&gt;precedence() &gt; m_precedence) || (m_atStartOfStatement &amp;&amp; n-&gt;needsParensIfLeftmost());
        // and so on
-----

(I moved the n == NULL check to the top because I think it could cause a NULL pointer dereference as it stands in the current build.)

Furthermore, a test case should be added in the parenthesization tests to ensure this problem does not creep up again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69744</commentid>
    <comment_count>2</comment_count>
      <attachid>18998</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 00:16:47 -0800</bug_when>
    <thetext>Created attachment 18998
path o&apos; doom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69746</commentid>
    <comment_count>3</comment_count>
      <attachid>18998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 00:20:30 -0800</bug_when>
    <thetext>Comment on attachment 18998
path o&apos; doom

I&apos;m not sure this is the right fix. I need to think about why those parentheses are showing up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69749</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 00:29:32 -0800</bug_when>
    <thetext>Var node contains a comma node, comma node appears to attempt to ensure a non-ambiguous parse by forcing PrecAssingment on the left hand side, and therefore parenthesising recursively, just try:
javascript:alert(function(){(a,b,c,d)})
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69750</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 00:50:19 -0800</bug_when>
    <thetext>This regression happened when we did the variable optimization. It started using the CommaNode for variable declarations, but that has the wrong precedence.

Here&apos;s my suggested fix: Make a class derived from CommaNode that is VariableDeclarationCommaNode -- the only difference for this derived node class is that its streamTo function uses PrecExpression, not PrecAssignment. Use that new class in the combineVarInitializers function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69761</commentid>
    <comment_count>6</comment_count>
      <attachid>18998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 02:37:21 -0800</bug_when>
    <thetext>Comment on attachment 18998
path o&apos; doom

Tests good, but fix should be done without adding a new boolean. We just need a different node type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69763</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 02:44:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/5731773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69880</commentid>
    <comment_count>8</comment_count>
      <attachid>19011</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 18:13:38 -0800</bug_when>
    <thetext>Created attachment 19011
Patch#2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69884</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Govostes">rgovostes</who>
    <bug_when>2008-02-08 18:57:42 -0800</bug_when>
    <thetext>I would recommend additional tests that do a mix of assignments and plain declarations.

Also, is my NULL pointer dereference fix worth including? I don&apos;t know what situation would cause it, but as-is the check is useless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69885</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 20:17:51 -0800</bug_when>
    <thetext>We can never have a null node in this case -- i can&apos;t think of any major place (other than maybe some of the linked lists) when we can have null in the AST.  Generally null is uncommon so we have noop nodes to avoid a null check in the general case :D

I&apos;ll add a few more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69887</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 20:34:21 -0800</bug_when>
    <thetext>I realised that there&apos;s no value in testing a mix of initialised and uninitialised declarations as all var declarations without initialisers get stripped from the dom and are regenerated from the symbol table at the head of the function -- thus reducing them to a var decl list of uninitialised variables, and a var decl list where everything is initialised, eg.
function ()
{
  var a, b=a, c=d, d=e;
  var e, f=a;
}
becomes:
function () 
{
  var a, e;
  var b = a, c = d, d = e;
  var f = a;
}
(note the hoisting of a and e)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69889</commentid>
    <comment_count>12</comment_count>
      <attachid>19011</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-02-08 21:10:05 -0800</bug_when>
    <thetext>Comment on attachment 19011
Patch#2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69890</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-08 21:17:31 -0800</bug_when>
    <thetext>Landed r30105</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18998</attachid>
            <date>2008-02-08 00:16:47 -0800</date>
            <delta_ts>2008-02-08 18:13:38 -0800</delta_ts>
            <desc>path o&apos; doom</desc>
            <filename>decompile-fix.patch</filename>
            <type>text/plain</type>
            <size>7284</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ0ZTYxLi5lM2U4MWFhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMDgtMDItMDcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTcyMTQ6IFJlZ3Jl
c3Npb246IEV4dHJhbmVvdXMgcGFyZW50aGVzZXMgaW4gZnVuY3Rpb24udG9TdHJpbmcoKQorCisg
ICAgICAgIFByZXZlbnQgdGhlIGNvbW1hIG5vZGUgaW5zaWRlIGEgdmFyIGRlY2xhcmF0aW9uIGZy
b20gcGxhY2luZyBwYXJlbnRoZXNlcworICAgICAgICBhcm91bmQgdGhlIGZpcnN0IHZhcmlhYmxl
cyBkZWNsYXJlZCBpbiBhIHZhciBkZWNsYXJhdGlvbiBsaXN0LgorCisgICAgICAgICoga2pzL25v
ZGVzMnN0cmluZy5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OlNvdXJjZVN0
cmVhbTo6U291cmNlU3RyZWFtKToKKyAgICAgICAgKEtKUzo6U291cmNlU3RyZWFtOjpvcGVyYXRv
cjw8KToKKwogMjAwOC0wMi0wNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3Ry
aW5nLmNwcAppbmRleCBiMTBlMTgwLi5lYWNmMmU0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ranMvbm9kZXMyc3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3Ry
aW5nLmNwcApAQCAtMzgsMTIgKzM4LDE0IEBAIGVudW0gRW5kbFR5cGUgeyBFbmRsIH07CiBlbnVt
IEluZGVudFR5cGUgeyBJbmRlbnQgfTsKIGVudW0gVW5pbmRlbnRUeXBlIHsgVW5pbmRlbnQgfTsK
IGVudW0gRG90RXhwclR5cGUgeyBEb3RFeHByIH07CitlbnVtIFZhclN0YXRlbWVudFR5cGUgeyBW
YXJTdGF0ZW1lbnQgfTsKIAogY2xhc3MgU291cmNlU3RyZWFtIHsKIHB1YmxpYzoKICAgICBTb3Vy
Y2VTdHJlYW0oKQogICAgICAgICA6IG1fbnVtYmVyTmVlZHNQYXJlbnMoZmFsc2UpCiAgICAgICAg
ICwgbV9hdFN0YXJ0T2ZTdGF0ZW1lbnQodHJ1ZSkKKyAgICAgICAgLCBtX2F0U3RhcnRPZlZhckRl
Y2woZmFsc2UpCiAgICAgICAgICwgbV9wcmVjZWRlbmNlKFByZWNFeHByZXNzaW9uKQogICAgIHsK
ICAgICB9CkBAIC02MCw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBTb3VyY2VTdHJlYW0mIG9wZXJh
dG9yPDwoVW5pbmRlbnRUeXBlKTsKICAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoRG90RXhw
clR5cGUpOwogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChQcmVjZWRlbmNlKTsKKyAgICBT
b3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoVmFyU3RhdGVtZW50VHlwZSk7CiAgICAgU291cmNlU3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IE5vZGUqKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
U291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFJlZlB0cjxUPiYgbikgeyByZXR1cm4gKnRo
aXMgPDwgbi5nZXQoKTsgfQogCkBAIC02OCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgVVN0cmlu
ZyBtX3NwYWNlc0ZvckluZGVudGF0aW9uOwogICAgIGJvb2wgbV9udW1iZXJOZWVkc1BhcmVuczsK
ICAgICBib29sIG1fYXRTdGFydE9mU3RhdGVtZW50OworICAgIGJvb2wgbV9hdFN0YXJ0T2ZWYXJE
ZWNsOwogICAgIFByZWNlZGVuY2UgbV9wcmVjZWRlbmNlOwogfTsKIApAQCAtMTU5LDYgKzE2Myw3
IEBAIFNvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIgYykKIHsKICAg
ICBtX251bWJlck5lZWRzUGFyZW5zID0gZmFsc2U7CiAgICAgbV9hdFN0YXJ0T2ZTdGF0ZW1lbnQg
PSBmYWxzZTsKKyAgICBtX2F0U3RhcnRPZlZhckRlY2wgPSBmYWxzZTsKICAgICBVQ2hhciBjaChj
KTsKICAgICBtX3N0cmluZy5hcHBlbmQoY2gpOwogICAgIHJldHVybiAqdGhpczsKQEAgLTE2OCw2
ICsxNzMsNyBAQCBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBj
aGFyKiBzKQogewogICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMgPSBmYWxzZTsKICAgICBtX2F0U3Rh
cnRPZlN0YXRlbWVudCA9IGZhbHNlOworICAgIG1fYXRTdGFydE9mVmFyRGVjbCA9IGZhbHNlOwog
ICAgIG1fc3RyaW5nICs9IHM7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTc3LDYgKzE4Myw3
IEBAIFNvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGRvdWJsZSB2YWx1ZSkK
ICAgICBib29sIG5lZWRQYXJlbnMgPSBtX251bWJlck5lZWRzUGFyZW5zOwogICAgIG1fbnVtYmVy
TmVlZHNQYXJlbnMgPSBmYWxzZTsKICAgICBtX2F0U3RhcnRPZlN0YXRlbWVudCA9IGZhbHNlOwor
ICAgIG1fYXRTdGFydE9mVmFyRGVjbCA9IGZhbHNlOwogCiAgICAgaWYgKG5lZWRQYXJlbnMpCiAg
ICAgICAgIG1fc3RyaW5nLmFwcGVuZCgnKCcpOwpAQCAtMTkxLDYgKzE5OCw3IEBAIFNvdXJjZVN0
cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFVTdHJpbmcmIHMpCiB7CiAgICAg
bV9udW1iZXJOZWVkc1BhcmVucyA9IGZhbHNlOwogICAgIG1fYXRTdGFydE9mU3RhdGVtZW50ID0g
ZmFsc2U7CisgICAgbV9hdFN0YXJ0T2ZWYXJEZWNsID0gZmFsc2U7CiAgICAgbV9zdHJpbmcgKz0g
czsKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xOTksNiArMjA3LDcgQEAgU291cmNlU3RyZWFt
JiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgSWRlbnRpZmllciYgcykKIHsKICAgICBt
X251bWJlck5lZWRzUGFyZW5zID0gZmFsc2U7CiAgICAgbV9hdFN0YXJ0T2ZTdGF0ZW1lbnQgPSBm
YWxzZTsKKyAgICBtX2F0U3RhcnRPZlZhckRlY2wgPSBmYWxzZTsKICAgICBtX3N0cmluZyArPSBz
LnVzdHJpbmcoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0yMjMsNiArMjMyLDcgQEAgU291
cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoRW5kbFR5cGUpCiB7CiAgICAgbV9u
dW1iZXJOZWVkc1BhcmVucyA9IGZhbHNlOwogICAgIG1fYXRTdGFydE9mU3RhdGVtZW50ID0gdHJ1
ZTsKKyAgICBtX2F0U3RhcnRPZlZhckRlY2wgPSBmYWxzZTsKICAgICBtX3N0cmluZy5hcHBlbmQo
J1xuJyk7CiAgICAgbV9zdHJpbmcuYXBwZW5kKG1fc3BhY2VzRm9ySW5kZW50YXRpb24pOwogICAg
IHJldHVybiAqdGhpczsKQEAgLTIzMiw2ICsyNDIsNyBAQCBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0
cmVhbTo6b3BlcmF0b3I8PChJbmRlbnRUeXBlKQogewogICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMg
PSBmYWxzZTsKICAgICBtX2F0U3RhcnRPZlN0YXRlbWVudCA9IGZhbHNlOworICAgIG1fYXRTdGFy
dE9mVmFyRGVjbCA9IGZhbHNlOwogICAgIG1fc3BhY2VzRm9ySW5kZW50YXRpb24gKz0gIiAgIjsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0yNDAsNiArMjUxLDcgQEAgU291cmNlU3RyZWFtJiBT
b3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoVW5pbmRlbnRUeXBlKQogewogICAgIG1fbnVtYmVyTmVl
ZHNQYXJlbnMgPSBmYWxzZTsKICAgICBtX2F0U3RhcnRPZlN0YXRlbWVudCA9IGZhbHNlOworICAg
IG1fYXRTdGFydE9mVmFyRGVjbCA9IGZhbHNlOwogICAgIG1fc3BhY2VzRm9ySW5kZW50YXRpb24g
PSBtX3NwYWNlc0ZvckluZGVudGF0aW9uLnN1YnN0cigwLCBtX3NwYWNlc0ZvckluZGVudGF0aW9u
LnNpemUoKSAtIDIpOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTI1Miw3ICsyNjQsMTQgQEAg
aW5saW5lIFNvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KERvdEV4cHJUeXBl
KQogCiBpbmxpbmUgU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKQogewotICAgIG1fcHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7CisgICAg
aWYgKCFtX2F0U3RhcnRPZlZhckRlY2wpCisgICAgICAgIG1fcHJlY2VkZW5jZSA9IHByZWNlZGVu
Y2U7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgU291cmNlU3RyZWFtJiBTb3VyY2VT
dHJlYW06Om9wZXJhdG9yPDwoVmFyU3RhdGVtZW50VHlwZSkKK3sKKyAgICBtX2F0U3RhcnRPZlZh
ckRlY2wgPSB0cnVlOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtODIxLDcgKzg0MCw3IEBA
IHZvaWQgRXhwclN0YXRlbWVudE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QK
IAogdm9pZCBWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0
CiB7Ci0gICAgcyA8PCBFbmRsIDw8ICJ2YXIgIiA8PCBtX2V4cHIgPDwgJzsnOworICAgIHMgPDwg
RW5kbCA8PCAidmFyICIgPDwgVmFyU3RhdGVtZW50IDw8IG1fZXhwciA8PCAnOyc7CiB9CiAKIHZv
aWQgSWZOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTMzZjdm
MS4uMTM5M2ViNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDA4LTAyLTA4ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdCBjYXNlcyBmb3IgZGVjb21waWxhdGlvbiBvZiB2YXJpYWJsZSBk
ZWNsYXJhdGlvbiBsaXN0cy4KKworICAgICAgICAqIGZhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmct
cGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2Z1
bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmpzOgorCiAyMDA4LTAyLTA2ICBLaW1tbyBLaW5u
dW5lbiAgPGtpbW1va0Bpa2kuZmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVu
dGhlc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJp
bmctcGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0CmluZGV4IDNiMTMxN2MuLjdmNDM5ODYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmct
cGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0CkBAIC00ODEsNiArNDgxLDEyIEBAIFBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgnKHsgfSkueCcpIGlzICcoeyB9KS54JwogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd4ID0geyB9JykgaXMgJ3ggPSB7IH0nCiBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJyhmdW5jdGlvbiAoKSB7IH0pKCkn
KSBpcyAnKGZ1bmN0aW9uICgpIHsgfSkoKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRt
b3N0VGVzdCgneCA9IGZ1bmN0aW9uICgpIHsgfScpIGlzICd4ID0gZnVuY3Rpb24gKCkgeyB9Jwor
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd2YXIgYScpIGlzICd2YXIgYScK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgndmFyIGEgPSAxJykgaXMgJ3Zh
ciBhID0gMScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgndmFyIGEsIGIn
KSBpcyAndmFyIGEsIGInCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3Zh
ciBhID0gMSwgYiA9IDInKSBpcyAndmFyIGEgPSAxLCBiID0gMicKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZUxlZnRtb3N0VGVzdCgndmFyIGEsIGIsIGMnKSBpcyAndmFyIGEsIGIsIGMnCitQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhID0gMSwgYiA9IDIsIGMgPSAz
JykgaXMgJ3ZhciBhID0gMSwgYiA9IDIsIGMgPSAzJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmpzCmluZGV4
IDI0OTE3NjEuLjc1ZDEyNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmpzCkBAIC0xOTgs
NCArMTk4LDExIEBAIHNob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd4
ID0geyB9JykiLCAiJ3ggPSB7IH0nIik7CiBzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZUxl
ZnRtb3N0VGVzdCgnKGZ1bmN0aW9uICgpIHsgfSkoKScpIiwgIicoZnVuY3Rpb24gKCkgeyB9KSgp
JyIpOwogc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ggPSBmdW5j
dGlvbiAoKSB7IH0nKSIsICIneCA9IGZ1bmN0aW9uICgpIHsgfSciKTsKIAorc2hvdWxkQmUoImNv
bXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhJykiLCAiJ3ZhciBhJyIpOworc2hv
dWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhID0gMScpIiwgIid2
YXIgYSA9IDEnIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgn
dmFyIGEsIGInKSIsICIndmFyIGEsIGInIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6
ZUxlZnRtb3N0VGVzdCgndmFyIGEgPSAxLCBiID0gMicpIiwgIid2YXIgYSA9IDEsIGIgPSAyJyIp
Oworc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhLCBiLCBj
JykiLCAiJ3ZhciBhLCBiLCBjJyIpOworc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0
bW9zdFRlc3QoJ3ZhciBhID0gMSwgYiA9IDIsIGMgPSAzJykiLCAiJ3ZhciBhID0gMSwgYiA9IDIs
IGMgPSAzJyIpOworCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="8301"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19011</attachid>
            <date>2008-02-08 18:13:38 -0800</date>
            <delta_ts>2008-02-08 21:10:05 -0800</delta_ts>
            <desc>Patch#2</desc>
            <filename>var-decl-tostring.patch</filename>
            <type>text/plain</type>
            <size>4615</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyZDU0MTJmLi5iZjFkMzk4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMDgtMDItMDggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTczMTc3Mz4gUkVHUkVTU0lPTiAocjI4OTczKTogRXh0cmFuZW91cyBwYXJlbnRoZXNlcyBpbiBm
dW5jdGlvbi50b1N0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIxNAorCisgICAgICAgIE1ha2UgYSBzdWJjbGFzcyBvZiBDb21tYU5vZGUg
dG8gcHJvdmlkZSB0aGUgY29ycmVjdCBwcmVjZWRlbmNlIGZvciBlYWNoIGV4cHJlc3Npb24gaW4K
KyAgICAgICAgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBsaXN0LgorCisgICAgICAgICoga2pzL2dy
YW1tYXIueToKKyAgICAgICAgKiBranMvbm9kZXMuaDoKKyAgICAgICAgKEtKUzo6VmFyRGVjbENv
bW1hTm9kZTo6KToKKwogMjAwOC0wMi0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUva2pzL2dyYW1tYXIueSBiL0phdmFTY3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKaW5kZXggZWY1
ZTQ2Ni4uNjU4YWU4OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2dyYW1tYXIueQor
KysgYi9KYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55CkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBz
dGF0aWMgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVWYXJJbml0aWFsaXplcnMoRXhwcmVzc2lvbk5v
ZGUqIGxpc3QsIEFzc2lnblJlc29sdgogewogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJu
IGluaXQ7Ci0gICAgcmV0dXJuIG5ldyBDb21tYU5vZGUobGlzdCwgaW5pdCk7CisgICAgcmV0dXJu
IG5ldyBWYXJEZWNsQ29tbWFOb2RlKGxpc3QsIGluaXQpOwogfQogCiAvLyBXZSB0dXJuIHZhcmlh
YmxlIGRlY2xhcmF0aW9ucyBpbnRvIGVpdGhlciBhc3NpZ25tZW50cyBvciBlbXB0eQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuaAppbmRleCBkNWZmMzQ4Li4zYmVhMTA0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaApAQCAtMjI3Niw2ICsy
Mjc2LDE1IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+
IG1fZXhwcjE7CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByMjsKICAgICB9
OworICAgIAorICAgIGNsYXNzIFZhckRlY2xDb21tYU5vZGUgOiBwdWJsaWMgQ29tbWFOb2RlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFZhckRlY2xDb21tYU5vZGUoRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgICAgIDog
Q29tbWFOb2RlKGV4cHIxLCBleHByMikKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIHZp
cnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0Fzc2lnbm1l
bnQ7IH0KKyAgICB9OwogCiAgICAgY2xhc3MgQ29uc3REZWNsTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiYTkyMzEuLjM2MTkyZTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAwOC0wMi0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qg
Y2FzZXMgZm9yIGRlY29tcGlsYXRpb24gb2YgdmFyaWFibGUgZGVjbGFyYXRpb24gbGlzdHMuCisK
KyAgICAgICAgKiBmYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJl
bnRoZXNlcy5qczoKKwogMjAwOC0wMi0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgLSB0ZXN0IGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzI0NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi10b1N0
cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0
aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAppbmRleCAzYjEzMTdjLi43ZjQz
OTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBh
cmVudGhlc2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9u
LXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4dApAQCAtNDgxLDYgKzQ4MSwxMiBAQCBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJyh7IH0pLngnKSBpcyAnKHsgfSku
eCcKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgneCA9IHsgfScpIGlzICd4
ID0geyB9JwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCcoZnVuY3Rpb24g
KCkgeyB9KSgpJykgaXMgJyhmdW5jdGlvbiAoKSB7IH0pKCknCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemVMZWZ0bW9zdFRlc3QoJ3ggPSBmdW5jdGlvbiAoKSB7IH0nKSBpcyAneCA9IGZ1bmN0aW9u
ICgpIHsgfScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRtb3N0VGVzdCgndmFyIGEnKSBp
cyAndmFyIGEnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhID0g
MScpIGlzICd2YXIgYSA9IDEnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3Qo
J3ZhciBhLCBiJykgaXMgJ3ZhciBhLCBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplTGVmdG1v
c3RUZXN0KCd2YXIgYSA9IDEsIGIgPSAyJykgaXMgJ3ZhciBhID0gMSwgYiA9IDInCitQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhLCBiLCBjJykgaXMgJ3ZhciBhLCBi
LCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd2YXIgYSA9IDEsIGIg
PSAyLCBjID0gMycpIGlzICd2YXIgYSA9IDEsIGIgPSAyLCBjID0gMycKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNl
cy5qcwppbmRleCAyNDkxNzYxLi43NWQxMjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5q
cwpAQCAtMTk4LDQgKzE5OCwxMSBAQCBzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZUxlZnRt
b3N0VGVzdCgneCA9IHsgfScpIiwgIid4ID0geyB9JyIpOwogc2hvdWxkQmUoImNvbXBpbGVBbmRT
ZXJpYWxpemVMZWZ0bW9zdFRlc3QoJyhmdW5jdGlvbiAoKSB7IH0pKCknKSIsICInKGZ1bmN0aW9u
ICgpIHsgfSkoKSciKTsKIHNob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0
KCd4ID0gZnVuY3Rpb24gKCkgeyB9JykiLCAiJ3ggPSBmdW5jdGlvbiAoKSB7IH0nIik7CiAKK3No
b3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd2YXIgYScpIiwgIid2YXIg
YSciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd2YXIgYSA9
IDEnKSIsICIndmFyIGEgPSAxJyIpOworc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemVMZWZ0
bW9zdFRlc3QoJ3ZhciBhLCBiJykiLCAiJ3ZhciBhLCBiJyIpOworc2hvdWxkQmUoImNvbXBpbGVB
bmRTZXJpYWxpemVMZWZ0bW9zdFRlc3QoJ3ZhciBhID0gMSwgYiA9IDInKSIsICIndmFyIGEgPSAx
LCBiID0gMiciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplTGVmdG1vc3RUZXN0KCd2
YXIgYSwgYiwgYycpIiwgIid2YXIgYSwgYiwgYyciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2Vy
aWFsaXplTGVmdG1vc3RUZXN0KCd2YXIgYSA9IDEsIGIgPSAyLCBjID0gMycpIiwgIid2YXIgYSA9
IDEsIGIgPSAyLCBjID0gMyciKTsKKwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="8311"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>