Author: marek
Date: 2007-10-03 13:24:49 -0400 (Wed, 03 Oct 2007)
New Revision: 86821
Modified:
trunk/mcs/mcs/ChangeLog
trunk/mcs/mcs/ecore.cs
Log:
2007-10-03 Marek Safar <[EMAIL PROTECTED]>
A fix for bug #328774
* ecore.cs (FieldExpr.EmitAssign): Fixed string concatenation compound
assignment.
(PropertyExpr.EmitAssign): Fixed string concatenation compound
assignment.
Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog 2007-10-03 15:47:33 UTC (rev 86820)
+++ trunk/mcs/mcs/ChangeLog 2007-10-03 17:24:49 UTC (rev 86821)
@@ -1,3 +1,11 @@
+2007-10-03 Marek Safar <[EMAIL PROTECTED]>
+
+ A fix for bug #328774
+ * ecore.cs (FieldExpr.EmitAssign): Fixed string concatenation compound
+ assignment.
+ (PropertyExpr.EmitAssign): Fixed string concatenation compound
+ assignment.
+
2007-10-03 Raja R Harinath <[EMAIL PROTECTED]>
Fix #328490
Modified: trunk/mcs/mcs/ecore.cs
===================================================================
--- trunk/mcs/mcs/ecore.cs 2007-10-03 15:47:33 UTC (rev 86820)
+++ trunk/mcs/mcs/ecore.cs 2007-10-03 17:24:49 UTC (rev 86821)
@@ -4384,16 +4384,19 @@
bool is_static = (fa & FieldAttributes.Static) != 0;
bool is_readonly = (fa & FieldAttributes.InitOnly) != 0;
ILGenerator ig = ec.ig;
- prepared = prepare_for_load;
if (is_readonly && !ec.IsConstructor){
Report_AssignToReadonly (source);
return;
}
- EmitInstance (ec, prepare_for_load);
+ //
+ // String concatenation creates a new string instance
+ //
+ prepared = prepare_for_load && !(source is
StringConcat);
+ EmitInstance (ec, prepared);
- source.Emit (ec);
+ source.Emit (ec);
if (leave_copy) {
ec.ig.Emit (OpCodes.Dup);
if (!FieldInfo.IsStatic) {
@@ -4854,10 +4857,15 @@
{
Expression my_source = source;
- prepared = prepare_for_load;
-
- if (prepared) {
+ if (prepare_for_load) {
+ if (source is StringConcat)
+ EmitInstance (ec, false);
+ else
+ prepared = true;
+
source.Emit (ec);
+
+ prepared = true;
if (leave_copy) {
ec.ig.Emit (OpCodes.Dup);
if (!is_static) {
@@ -4871,7 +4879,7 @@
temp.Store (ec);
my_source = temp;
}
-
+
ArrayList args = new ArrayList (1);
args.Add (new Argument (my_source,
Argument.AType.Expression));
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches