From 363056e66e39666250a5da6876cb808bf1bef1ce Mon Sep 17 00:00:00 2001 From: Xamarin Public Jenkins Date: Tue, 25 Aug 2015 18:44:33 -0400 Subject: [PATCH] Imported Upstream version 4.0.4.1 Former-commit-id: d8eb832a9a4b58a238f2e069a0b68c70082f8790 --- Makefile.in | 2 +- configure.REMOVED.git-id | 2 +- configure.ac.REMOVED.git-id | 2 +- mcs/build/common/Consts.cs | 2 +- .../System.Net.Http/HttpClientHandler.cs | 2 + .../System.Net.Http/HttpContent.cs | 6 +++ mcs/class/System/System.Net/HttpWebRequest.cs | 44 ++++++++++++++---- .../DeflateStreamTest.cs | 35 ++++++++++++++ .../monolite/Mono.Security.dll.REMOVED.git-id | 2 +- .../System.Configuration.dll.REMOVED.git-id | 2 +- .../monolite/System.Core.dll.REMOVED.git-id | 2 +- .../System.Security.dll.REMOVED.git-id | 2 +- .../monolite/System.Xml.dll.REMOVED.git-id | 2 +- .../lib/monolite/System.dll.REMOVED.git-id | 2 +- .../lib/monolite/basic.exe.REMOVED.git-id | 2 +- .../lib/monolite/mscorlib.dll.REMOVED.git-id | 2 +- mono-core.spec | 2 +- mono/metadata/image.c | 5 +- mono/mini/Makefile.am | 2 +- mono/mini/Makefile.am.in | 2 +- mono/mini/Makefile.in.REMOVED.git-id | 2 +- mono/mini/seq-points.c | 10 +++- mono/mini/version.h | 2 +- po/mcs/de.gmo | Bin 5406 -> 5406 bytes po/mcs/de.po.REMOVED.git-id | 2 +- po/mcs/es.gmo | Bin 16329 -> 16329 bytes po/mcs/es.po.REMOVED.git-id | 2 +- po/mcs/ja.gmo | Bin 20863 -> 20863 bytes po/mcs/ja.po.REMOVED.git-id | 2 +- po/mcs/mcs.pot | 4 +- po/mcs/pt_BR.gmo | Bin 73398 -> 73398 bytes po/mcs/pt_BR.po.REMOVED.git-id | 2 +- support/zlib-helper.c | 4 +- winconfig.h | 2 +- 34 files changed, 115 insertions(+), 39 deletions(-) diff --git a/Makefile.in b/Makefile.in index a80823be98..f0873e25ff 100644 --- a/Makefile.in +++ b/Makefile.in @@ -85,7 +85,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/config.h.in mkinstalldirs \ $(srcdir)/mono-core.spec.in $(srcdir)/mono-uninstalled.pc.in \ AUTHORS COPYING.LIB ChangeLog NEWS compile config.guess \ - config.rpath config.sub depcomp install-sh missing ltmain.sh + config.rpath config.sub install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id index 73361a6915..61434bb1ea 100644 --- a/configure.REMOVED.git-id +++ b/configure.REMOVED.git-id @@ -1 +1 @@ -d8620aa82da0a0b38b32fce2756391f51b4f0e09 \ No newline at end of file +0153a4d763e8fdec1bfc6ad8a10db68ae9a8b3ad \ No newline at end of file diff --git a/configure.ac.REMOVED.git-id b/configure.ac.REMOVED.git-id index c04bfedd79..f3f1ee7eb9 100644 --- a/configure.ac.REMOVED.git-id +++ b/configure.ac.REMOVED.git-id @@ -1 +1 @@ -eb6b931cec597bff05367555adbfdfd531547514 \ No newline at end of file +4d5ca3baf19b55971eba3a1e4c430304031594ed \ No newline at end of file diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs index 1527064894..ee2c75bd17 100644 --- a/mcs/build/common/Consts.cs +++ b/mcs/build/common/Consts.cs @@ -34,7 +34,7 @@ static class Consts // Use these assembly version constants to make code more maintainable. // - public const string MonoVersion = "4.0.3.0"; + public const string MonoVersion = "4.0.4.0"; public const string MonoCompany = "Mono development team"; public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoCopyright = "(c) Various Mono authors"; diff --git a/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs b/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs index 513a21eb5d..5c23fc0b52 100644 --- a/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs +++ b/mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs @@ -340,6 +340,8 @@ namespace System.Net.Http wrequest.ContentLength = content.Headers.ContentLength.Value; } + wrequest.ResendContentFactory = content.CopyTo; + var stream = await wrequest.GetRequestStreamAsync ().ConfigureAwait (false); await request.Content.CopyToAsync (stream).ConfigureAwait (false); } else if (HttpMethod.Post.Equals (request.Method) || HttpMethod.Put.Equals (request.Method) || HttpMethod.Delete.Equals (request.Method)) { diff --git a/mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs b/mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs index 344d87164e..df97dc50bb 100644 --- a/mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs +++ b/mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs @@ -81,6 +81,12 @@ namespace System.Net.Http } } + // Only used by HttpWebRequest internals which is not async friendly + internal void CopyTo (Stream stream) + { + CopyToAsync (stream).Wait (); + } + public Task CopyToAsync (Stream stream) { return CopyToAsync (stream, null); diff --git a/mcs/class/System/System.Net/HttpWebRequest.cs b/mcs/class/System/System.Net/HttpWebRequest.cs index 7ccbcc2f34..fc30c3ad9b 100644 --- a/mcs/class/System/System.Net/HttpWebRequest.cs +++ b/mcs/class/System/System.Net/HttpWebRequest.cs @@ -110,6 +110,9 @@ namespace System.Net AuthorizationState auth_state, proxy_auth_state; string host; + [NonSerialized] + internal Action ResendContentFactory; + // Constructors static HttpWebRequest () { @@ -226,9 +229,15 @@ namespace System.Net internal bool InternalAllowBuffering { get { - return (allowBuffering && (method != "HEAD" && method != "GET" && - method != "MKCOL" && method != "CONNECT" && - method != "TRACE")); + return allowBuffering && MethodWithBuffer; + } + } + + bool MethodWithBuffer { + get { + return method != "HEAD" && method != "GET" && + method != "MKCOL" && method != "CONNECT" && + method != "TRACE"; } } @@ -1306,8 +1315,7 @@ namespace System.Net bodyBuffer = null; writeStream.Close (); } - } else if (method != "HEAD" && method != "GET" && method != "MKCOL" && method != "CONNECT" && - method != "TRACE") { + } else if (MethodWithBuffer) { if (getResponseCalled && !writeStream.RequestWritten) return writeStream.WriteRequestAsync (result); } @@ -1606,12 +1614,28 @@ namespace System.Net (ProxyQuery && !proxy_auth_state.IsCompleted && code == HttpStatusCode.ProxyAuthenticationRequired)) { if (!usedPreAuth && CheckAuthorization (webResponse, code)) { // Keep the written body, so it can be rewritten in the retry - if (InternalAllowBuffering) { - if (writeStream.WriteBufferLength > 0) { - bodyBuffer = writeStream.WriteBuffer; - bodyBufferLength = writeStream.WriteBufferLength; + if (MethodWithBuffer) { + if (AllowWriteStreamBuffering) { + if (writeStream.WriteBufferLength > 0) { + bodyBuffer = writeStream.WriteBuffer; + bodyBufferLength = writeStream.WriteBufferLength; + } + + return true; + } + + // + // Buffering is not allowed but we have alternative way to get same content (we + // need to resent it due to NTLM Authentication). + // + if (ResendContentFactory != null) { + using (var ms = new MemoryStream ()) { + ResendContentFactory (ms); + bodyBuffer = ms.ToArray (); + bodyBufferLength = bodyBuffer.Length; + } + return true; } - return true; } else if (method != "PUT" && method != "POST") { bodyBuffer = null; return true; diff --git a/mcs/class/System/Test/System.IO.Compression/DeflateStreamTest.cs b/mcs/class/System/Test/System.IO.Compression/DeflateStreamTest.cs index 984d13ca93..1df962bffb 100644 --- a/mcs/class/System/Test/System.IO.Compression/DeflateStreamTest.cs +++ b/mcs/class/System/Test/System.IO.Compression/DeflateStreamTest.cs @@ -362,6 +362,41 @@ namespace MonoTests.System.IO.Compression backing.Close(); } #endif + + [Test] + [ExpectedException (typeof (ArgumentException))] + public void CheckBufferOverrun () + { + byte[] data = new byte [20]; + MemoryStream backing = new MemoryStream (); + DeflateStream compressing = new DeflateStream (backing, CompressionLevel.Fastest, true); + compressing.Write (data, 0, data.Length + 1); + compressing.Close (); + backing.Close (); + } + + [Test] + public void Bug28777_EmptyFlush () + { + MemoryStream backing = new MemoryStream (); + DeflateStream compressing = new DeflateStream (backing, CompressionLevel.Fastest, true); + compressing.Flush (); + compressing.Close (); + backing.Close (); + } + + [Test] + public void Bug28777_DoubleFlush () + { + byte[] buffer = new byte [4096]; + MemoryStream backing = new MemoryStream (); + DeflateStream compressing = new DeflateStream (backing, CompressionLevel.Fastest, true); + compressing.Write (buffer, 0, buffer.Length); + compressing.Flush (); + compressing.Flush (); + compressing.Close (); + backing.Close (); + } } } diff --git a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id index 515a2297f3..991a517f58 100644 --- a/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -635d63e502807da4ea4ad941b6e58bfab43bd37a \ No newline at end of file +68b84e24a06bbb6bb78ef224608dc4eba15d5030 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Configuration.dll.REMOVED.git-id index 9e450f2a9e..e4198b66e9 100644 --- a/mcs/class/lib/monolite/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -2b5f667533551ac33fc9de43b43a62b448b55a90 \ No newline at end of file +17f4de6638d19cbc68f60a4d532798d87ab7302b \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id index e76c30e3b8..a313e39b2c 100644 --- a/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Core.dll.REMOVED.git-id @@ -1 +1 @@ -5e889cf1e66abc75e57bafd92c7139ab2c808069 \ No newline at end of file +e29dbe6efa356793ba4738a7a2d9858233c5d502 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Security.dll.REMOVED.git-id index 5b64d70aa7..6b95943e32 100644 --- a/mcs/class/lib/monolite/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -4218f3c3bb5d10cef11ff7c790e5ade5d1b86898 \ No newline at end of file +2a993e8625896ec805afccd0668cb8f016e84399 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id index f60f0ab84a..2e68e346d8 100644 --- a/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -2bcd9a0ee7ae4393575a446e424e0cd5017ba4c1 \ No newline at end of file +0bf4ff5424f83891362cc450b801e8168bf5b777 \ No newline at end of file diff --git a/mcs/class/lib/monolite/System.dll.REMOVED.git-id b/mcs/class/lib/monolite/System.dll.REMOVED.git-id index d686e63c3c..a147cdf2e5 100644 --- a/mcs/class/lib/monolite/System.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/System.dll.REMOVED.git-id @@ -1 +1 @@ -ff31c170be712465ad92e7a9205369a179b7fd06 \ No newline at end of file +58b35960f78d990b0abdf6138caee16ddcde82c8 \ No newline at end of file diff --git a/mcs/class/lib/monolite/basic.exe.REMOVED.git-id b/mcs/class/lib/monolite/basic.exe.REMOVED.git-id index 734b3d50ac..c0db6ac094 100644 --- a/mcs/class/lib/monolite/basic.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite/basic.exe.REMOVED.git-id @@ -1 +1 @@ -02b350ac4078a8f6791373d728b2866b52268350 \ No newline at end of file +32112b9a947cfe490e82c9e32a4201dc758359d9 \ No newline at end of file diff --git a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id index c73cf859b9..381d7b4aa7 100644 --- a/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -ab62521ff428443441e7b5469865bfa7555b53a7 \ No newline at end of file +bf09282b13961dddc7fd50d446f6246c14bff292 \ No newline at end of file diff --git a/mono-core.spec b/mono-core.spec index a892e8973b..a8b606954e 100644 --- a/mono-core.spec +++ b/mono-core.spec @@ -15,7 +15,7 @@ License: LGPL v2.1 only Group: Development/Languages/Mono Summary: A .NET Runtime Environment Url: http://www.mono-project.com -Version: 4.0.3 +Version: 4.0.4 Release: 0 Source0: mono-%{version}.tar.bz2 BuildRequires: bison diff --git a/mono/metadata/image.c b/mono/metadata/image.c index d62b7036d8..90768b70e0 100644 --- a/mono/metadata/image.c +++ b/mono/metadata/image.c @@ -2007,6 +2007,7 @@ mono_image_load_file_for_image (MonoImage *image, int fileidx) mono_image_unlock (image); return image->files [fileidx - 1]; } + mono_image_unlock (image); fname_id = mono_metadata_decode_row_col (t, fileidx - 1, MONO_FILE_NAME); fname = mono_metadata_string_heap (image, fname_id); @@ -2020,7 +2021,7 @@ mono_image_load_file_for_image (MonoImage *image, int fileidx) if (image->files && image->files [fileidx - 1]) { MonoImage *old = res; res = image->files [fileidx - 1]; - mono_loader_unlock (); + mono_image_unlock (image); mono_image_close (old); } else { int i; @@ -2034,7 +2035,7 @@ mono_image_load_file_for_image (MonoImage *image, int fileidx) if (!image->files) image->files = g_new0 (MonoImage*, t->rows); image->files [fileidx - 1] = res; - mono_loader_unlock (); + mono_image_unlock (image); /* vtable fixup can't happen with the image lock held */ #ifdef HOST_WIN32 if (res->is_module_handle) diff --git a/mono/mini/Makefile.am b/mono/mini/Makefile.am index 0a8f9b71f5..a47fa14ad8 100644 --- a/mono/mini/Makefile.am +++ b/mono/mini/Makefile.am @@ -759,7 +759,7 @@ EXTRA_DIST = TestDriver.cs ldscript ldscript.mono \ Makefile.am.in version.h: Makefile - echo "#define FULL_VERSION \"Stable 4.0.3.20/d6946b4\"" > version.h + echo "#define FULL_VERSION \"Stable 4.0.4.1/5ab4c0d\"" > version.h # Utility target for patching libtool to speed up linking patch-libtool: diff --git a/mono/mini/Makefile.am.in b/mono/mini/Makefile.am.in index 0a8f9b71f5..a47fa14ad8 100755 --- a/mono/mini/Makefile.am.in +++ b/mono/mini/Makefile.am.in @@ -759,7 +759,7 @@ EXTRA_DIST = TestDriver.cs ldscript ldscript.mono \ Makefile.am.in version.h: Makefile - echo "#define FULL_VERSION \"Stable 4.0.3.20/d6946b4\"" > version.h + echo "#define FULL_VERSION \"Stable 4.0.4.1/5ab4c0d\"" > version.h # Utility target for patching libtool to speed up linking patch-libtool: diff --git a/mono/mini/Makefile.in.REMOVED.git-id b/mono/mini/Makefile.in.REMOVED.git-id index 7ac86952d9..9b33a1aa82 100644 --- a/mono/mini/Makefile.in.REMOVED.git-id +++ b/mono/mini/Makefile.in.REMOVED.git-id @@ -1 +1 @@ -7ac03b3cefbbfa9d11d67b9d04a42870367a4eff \ No newline at end of file +8959e291e0e5f26397d9b96d257b52820f9acee0 \ No newline at end of file diff --git a/mono/mini/seq-points.c b/mono/mini/seq-points.c index 18a3f27384..b58e81b34d 100644 --- a/mono/mini/seq-points.c +++ b/mono/mini/seq-points.c @@ -398,14 +398,20 @@ MonoSeqPointInfo* get_seq_points (MonoDomain *domain, MonoMethod *method) { MonoSeqPointInfo *seq_points; + MonoMethod *declaring_generic_method = NULL, *shared_method = NULL; + + if (method->is_inflated) { + declaring_generic_method = mono_method_get_declaring_generic_method (method); + shared_method = mini_get_shared_method (method); + } mono_domain_lock (domain); seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, method); if (!seq_points && method->is_inflated) { /* generic sharing + aot */ - seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, mono_method_get_declaring_generic_method (method)); + seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, declaring_generic_method); if (!seq_points) - seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, mini_get_shared_method (method)); + seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, shared_method); } mono_domain_unlock (domain); diff --git a/mono/mini/version.h b/mono/mini/version.h index dde1d3d7b1..86d6529afd 100644 --- a/mono/mini/version.h +++ b/mono/mini/version.h @@ -1 +1 @@ -#define FULL_VERSION "Stable 4.0.3.20/d6946b4" +#define FULL_VERSION "Stable 4.0.4.1/5ab4c0d" diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo index c0272755e75eaa77488ef6f143a2c75bbbc08d09..2787ca156e1fa85d742bcff34f56ff73e0919207 100644 GIT binary patch delta 20 bcmbQIHBW296E1cmQw2i{E2GV?xs160N`?k^ delta 20 bcmbQIHBW296E1cG69oekD}&9ixs160N-hR% diff --git a/po/mcs/de.po.REMOVED.git-id b/po/mcs/de.po.REMOVED.git-id index 62bcb48e5c..03b8181749 100644 --- a/po/mcs/de.po.REMOVED.git-id +++ b/po/mcs/de.po.REMOVED.git-id @@ -1 +1 @@ -d1651edd05db3ae091ca4cff9b02f7b13bc86b7b \ No newline at end of file +e87480f17a6c70946d156af39e4c2b189a80a620 \ No newline at end of file diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo index 19e6a96957b54a938c7d4eec3fc0679061ecd45d..da0893863c74e752f93ccd4d5e85b9272e2ef321 100644 GIT binary patch delta 20 bcmX?Ef3kjqt|GgUse++}mC_(;vh89*voB7lWwE$rF2MGWG delta 22 dcmeyri1Gg-#trQ1>;@(Z1}0VpoB7lWwE$qC2LAv6 diff --git a/po/mcs/ja.po.REMOVED.git-id b/po/mcs/ja.po.REMOVED.git-id index eec819be41..9e2ebf40e7 100644 --- a/po/mcs/ja.po.REMOVED.git-id +++ b/po/mcs/ja.po.REMOVED.git-id @@ -1 +1 @@ -08920bb207a693b25bcc18c57476e3b1b4acecc0 \ No newline at end of file +da5278e6aae3a989cf1ff0239c17fa754ba52af5 \ No newline at end of file diff --git a/po/mcs/mcs.pot b/po/mcs/mcs.pot index db4b5afc9d..87304ae232 100644 --- a/po/mcs/mcs.pot +++ b/po/mcs/mcs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: mono 4.0.3\n" +"Project-Id-Version: mono 4.0.4\n" "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n" -"POT-Creation-Date: 2015-08-04 04:01-0400\n" +"POT-Creation-Date: 2015-08-25 18:21-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo index 317a5b33e52ee0f21c44ceda85ae607f83bd1b26..8d0a1e3800dd0f38b38acc3f2a58aed6cd43ce1e 100644 GIT binary patch delta 22 ecmdnCmu1^tmJN%iu^X8x7+P2vZC*8vrvm_NS_r}b delta 22 ecmdnCmu1^tmJN%iu^X5u7?@ZYY+f~urvm_N0tmPO diff --git a/po/mcs/pt_BR.po.REMOVED.git-id b/po/mcs/pt_BR.po.REMOVED.git-id index ea04256ad8..59371dc70b 100644 --- a/po/mcs/pt_BR.po.REMOVED.git-id +++ b/po/mcs/pt_BR.po.REMOVED.git-id @@ -1 +1 @@ -2775b413837b22ff92ad5e1825f70bdd7f111994 \ No newline at end of file +cd2f738943dff96c92171c37e6c30716428ffd26 \ No newline at end of file diff --git a/support/zlib-helper.c b/support/zlib-helper.c index 83455413b3..38696260a0 100644 --- a/support/zlib-helper.c +++ b/support/zlib-helper.c @@ -90,6 +90,8 @@ CreateZStream (gint compress, guchar gzip, read_write_func func, void *gchandle) result->gchandle = gchandle; result->compress = compress; result->buffer = g_new (guchar, BUFFER_SIZE); + result->stream->next_out = result->buffer; + result->stream->avail_out = BUFFER_SIZE; return result; } @@ -148,7 +150,7 @@ flush_internal (ZStream *stream, gboolean is_final) if (!stream->compress) return 0; - if (!is_final) { + if (!is_final && stream->stream->avail_in != 0) { status = deflate (stream->stream, Z_PARTIAL_FLUSH); if (status != Z_OK && status != Z_STREAM_END) return status; diff --git a/winconfig.h b/winconfig.h index 840060e59f..eb140e1c9d 100644 --- a/winconfig.h +++ b/winconfig.h @@ -642,5 +642,5 @@ /* #undef USE_MONO_MUTEX */ /* Version number of package */ -#define VERSION "4.0.3" +#define VERSION "4.0.4" #endif