//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright 2011 Xamarin Inc
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
[Serializable]
[ComVisible (true)]
[MonoLimitation ("Serialization format not compatible with .NET")]
+ [StructLayout (LayoutKind.Sequential)]
public sealed class StringBuilder : ISerializable
{
private int _length;
return _cached_str;
// If we only have a half-full buffer we return a new string.
- if (_length < (_str.Length >> 1))
+ if (_length < (_str.Length >> 1) || (_str.Length > string.LOS_limit && _length <= string.LOS_limit))
{
// use String.SubstringUnchecked instead of String.Substring
// as the former is guaranteed to create a new string object
return this;
}
-#if NET_4_0
+#if NET_4_0 || MOONLIGHT || MOBILE
public StringBuilder Clear ()
{
- _length = 0;
+ Length = 0;
return this;
}
#endif
return this;
}
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
internal
#else
public
return AppendFormat (null, format, new object [] { arg0 });
}
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
internal
#else
public
return AppendFormat (null, format, new object [] { arg0, arg1 });
}
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
internal
#else
public