Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Avoid using the Int32.ToString method overload with no arguments. Depending on the current culture, it interacts badly when later parsing the returned strings with the invariant culture. Reported by David Rickard via the ML. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9b146be3f9aef0c339aeff24d3433a9c |
User & Date: | mistachkin 2017-05-08 01:18:07.860 |
Original Comment: | Avoid using the Int32.ToString method overload with no arguments. Depending on the current culture, it interacts badly when later parsing the returned strings with the invariant culture. |
References
2017-05-11
| ||
15:36 | Cherrypick of [9b146be3f9aef0c3] and [ece910dd8df8ce5f], the Int32.ToString culture fix. check-in: cc5c576e43 user: mistachkin tags: branch-1.0.105 | |
2017-05-08
| ||
19:15 | Add test for the fix in check-in [9b146be3f9aef0c3]. check-in: ece910dd8d user: mistachkin tags: trunk | |
Context
2017-05-11
| ||
15:36 | Cherrypick of [9b146be3f9aef0c3] and [ece910dd8df8ce5f], the Int32.ToString culture fix. check-in: cc5c576e43 user: mistachkin tags: branch-1.0.105 | |
2017-05-08
| ||
19:15 | Prevent test suite helper procedures 'getDbDefaultPageSize' and 'getDbDefaultCacheSize' from raising script errors. check-in: 2c31a69674 user: mistachkin tags: trunk | |
01:18 | Avoid using the Int32.ToString method overload with no arguments. Depending on the current culture, it interacts badly when later parsing the returned strings with the invariant culture. Reported by David Rickard via the ML. check-in: 9b146be3f9 user: mistachkin tags: trunk | |
2017-05-04
| ||
18:38 | Add the 'vswhere' tool to externals, which will be used to help locate installed instances of Visual Studio 2017. check-in: bd836f29a8 user: mistachkin tags: trunk | |
Changes
Changes to System.Data.SQLite/SQLiteConnection.cs.
︙ | ︙ | |||
3719 3720 3721 3722 3723 3724 3725 | #if !NET_COMPACT_20 && TRACE_WARNING bool uri = false; #endif bool fullUri = false; string fileName; | | | 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 | #if !NET_COMPACT_20 && TRACE_WARNING bool uri = false; #endif bool fullUri = false; string fileName; if (Convert.ToInt32(FindKey(opts, "Version", SQLiteConvert.ToString(DefaultVersion)), CultureInfo.InvariantCulture) != DefaultVersion) throw new NotSupportedException(HelperMethods.StringFormat(CultureInfo.CurrentCulture, "Only SQLite Version {0} is supported at this time", DefaultVersion)); #if INTEROP_INCLUDE_ZIPVFS bool useZipVfs = false; string zipVfsVersion = FindKey(opts, "ZipVfsVersion", DefaultZipVfsVersion); if (zipVfsVersion != null) |
︙ | ︙ | |||
3810 3811 3812 3813 3814 3815 3816 | fileName = ExpandFileName(fileName, toFullPath); } } try { bool usePooling = SQLiteConvert.ToBoolean(FindKey(opts, "Pooling", GetDefaultPooling().ToString())); | | | | | | | 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 | fileName = ExpandFileName(fileName, toFullPath); } } try { bool usePooling = SQLiteConvert.ToBoolean(FindKey(opts, "Pooling", GetDefaultPooling().ToString())); int maxPoolSize = Convert.ToInt32(FindKey(opts, "Max Pool Size", SQLiteConvert.ToString(DefaultMaxPoolSize)), CultureInfo.InvariantCulture); _defaultTimeout = Convert.ToInt32(FindKey(opts, "Default Timeout", SQLiteConvert.ToString(DefaultConnectionTimeout)), CultureInfo.InvariantCulture); _busyTimeout = Convert.ToInt32(FindKey(opts, "BusyTimeout", SQLiteConvert.ToString(DefaultBusyTimeout)), CultureInfo.InvariantCulture); _prepareRetries = Convert.ToInt32(FindKey(opts, "PrepareRetries", SQLiteConvert.ToString(DefaultPrepareRetries)), CultureInfo.InvariantCulture); _progressOps = Convert.ToInt32(FindKey(opts, "ProgressOps", SQLiteConvert.ToString(DefaultProgressOps)), CultureInfo.InvariantCulture); enumValue = TryParseEnum(typeof(IsolationLevel), FindKey(opts, "Default IsolationLevel", DefaultIsolationLevel.ToString()), true); _defaultIsolation = (enumValue is IsolationLevel) ? (IsolationLevel)enumValue : DefaultIsolationLevel; _defaultIsolation = GetEffectiveIsolationLevel(_defaultIsolation); if (_defaultIsolation != ImmediateIsolationLevel && _defaultIsolation != DeferredIsolationLevel) throw new NotSupportedException("Invalid Default IsolationLevel specified"); |
︙ | ︙ | |||
3916 3917 3918 3919 3920 3921 3922 | cmd.ExecuteNonQuery(); } int intValue; if (!fullUri && !isMemory) { | | | | 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 | cmd.ExecuteNonQuery(); } int intValue; if (!fullUri && !isMemory) { strValue = FindKey(opts, "Page Size", SQLiteConvert.ToString(DefaultPageSize)); intValue = Convert.ToInt32(strValue, CultureInfo.InvariantCulture); if (intValue != DefaultPageSize) { cmd.CommandText = HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA page_size={0}", intValue); cmd.ExecuteNonQuery(); } } strValue = FindKey(opts, "Max Page Count", SQLiteConvert.ToString(DefaultMaxPageCount)); intValue = Convert.ToInt32(strValue, CultureInfo.InvariantCulture); if (intValue != DefaultMaxPageCount) { cmd.CommandText = HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA max_page_count={0}", intValue); cmd.ExecuteNonQuery(); } |
︙ | ︙ | |||
3949 3950 3951 3952 3953 3954 3955 | enumValue = TryParseEnum(typeof(SQLiteSynchronousEnum), strValue, true); if (!(enumValue is SQLiteSynchronousEnum) || ((SQLiteSynchronousEnum)enumValue != DefaultSynchronous)) { cmd.CommandText = HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA synchronous={0}", strValue); cmd.ExecuteNonQuery(); } | | | 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 | enumValue = TryParseEnum(typeof(SQLiteSynchronousEnum), strValue, true); if (!(enumValue is SQLiteSynchronousEnum) || ((SQLiteSynchronousEnum)enumValue != DefaultSynchronous)) { cmd.CommandText = HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA synchronous={0}", strValue); cmd.ExecuteNonQuery(); } strValue = FindKey(opts, "Cache Size", SQLiteConvert.ToString(DefaultCacheSize)); intValue = Convert.ToInt32(strValue, CultureInfo.InvariantCulture); if (intValue != DefaultCacheSize) { cmd.CommandText = HelperMethods.StringFormat(CultureInfo.InvariantCulture, "PRAGMA cache_size={0}", intValue); cmd.ExecuteNonQuery(); } |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 | public static bool ToBoolean(object source) { if (source is bool) return (bool)source; return ToBoolean(ToStringWithProvider( source, CultureInfo.InvariantCulture)); } /// <summary> /// Attempts to convert a <see cref="String" /> into a <see cref="Boolean" />. /// </summary> /// <param name="source"> /// The <see cref="String" /> to convert, cannot be null. /// </param> | > > > > > > > > > > > > > > > > > > > > | 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 | public static bool ToBoolean(object source) { if (source is bool) return (bool)source; return ToBoolean(ToStringWithProvider( source, CultureInfo.InvariantCulture)); } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts an integer to a string that can be round-tripped using the /// invariant culture. /// </summary> /// <param name="value"> /// The integer value to return the string representation for. /// </param> /// <returns> /// The string representation of the specified integer value, using the /// invariant culture. /// </returns> internal static string ToString(int value) { return value.ToString(CultureInfo.InvariantCulture); } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Attempts to convert a <see cref="String" /> into a <see cref="Boolean" />. /// </summary> /// <param name="source"> /// The <see cref="String" /> to convert, cannot be null. /// </param> |
︙ | ︙ |