From: Johannes Schindelin Date: Wed, 25 Sep 2019 15:20:44 GMT Subject: Re: [PATCH 1/1] contrib/buildsystems: fix Visual Studio Debug configuration Message-ID: In-Reply-To: <525669b3b38ed57d6d4f188dfe0bb8fe10b63749.1569227313.git.gitgitgadget@gmail.com> Hi Alexandr, On Mon, 23 Sep 2019, Alexandr Miloslavskiy via GitGitGadget wrote: > From: Alexandr Miloslavskiy > > Even though Debug configuration builds, the resulting build is incorrect > in a subtle way: it mixes up Debug and Release binaries, which in turn > causes hard-to-predict bugs. > > In my case, when git calls iconv library, iconv sets 'errno' and git > then tests it, but in Debug and Release CRT those 'errno' are different > memory locations. > > This patch addresses 3 connected bugs: > 1) Typo in '\(Configuration)'. As a result, Debug configuration > condition is always false and Release path is taken instead. > 2) Regexp that replaced 'zlib.lib' with 'zlibd.lib' was only affecting > the first occurrence. However, some projects have it listed twice. > Previously this bug was hidden, because Debug path was never taken. > I decided that avoiding double -lz in makefile is fragile and I'd > better replace all occurrences instead. > 3) In Debug, 'libcurl-d.lib' should be used instead of 'libcurl.lib'. > Previously this bug was hidden, because Debug path was never taken. > > Signed-off-by: Alexandr Miloslavskiy ACK! Johannes > --- > contrib/buildsystems/Generators/Vcxproj.pm | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/contrib/buildsystems/Generators/Vcxproj.pm b/contrib/buildsystems/Generators/Vcxproj.pm > index 576ccabe1d..7b1e277eca 100644 > --- a/contrib/buildsystems/Generators/Vcxproj.pm > +++ b/contrib/buildsystems/Generators/Vcxproj.pm > @@ -79,7 +79,8 @@ sub createProject { > if (!$static_library) { > $libs_release = join(";", sort(grep /^(?!libgit\.lib|xdiff\/lib\.lib|vcs-svn\/lib\.lib)/, @{$$build_structure{"$prefix${name}_LIBS"}})); > $libs_debug = $libs_release; > - $libs_debug =~ s/zlib\.lib/zlibd\.lib/; > + $libs_debug =~ s/zlib\.lib/zlibd\.lib/g; > + $libs_debug =~ s/libcurl\.lib/libcurl-d\.lib/g; > } > > $defines =~ s/-D//g; > @@ -119,13 +120,13 @@ sub createProject { > x86-windows > x64-windows > $cdup\\compat\\vcbuild\\vcpkg\\installed\\\$(VCPKGArch) > - \$(VCPKGArchDirectory)\\debug\\bin > - \$(VCPKGArchDirectory)\\debug\\lib > - \$(VCPKGArchDirectory)\\bin > - \$(VCPKGArchDirectory)\\lib > + \$(VCPKGArchDirectory)\\debug\\bin > + \$(VCPKGArchDirectory)\\debug\\lib > + \$(VCPKGArchDirectory)\\bin > + \$(VCPKGArchDirectory)\\lib > \$(VCPKGArchDirectory)\\include > - $libs_debug > - $libs_release > + $libs_debug > + $libs_release > > > > -- > gitgitgadget >