Hi Alexandr, On Mon, 23 Sep 2019, Alexandr Miloslavskiy via GitGitGadget wrote: > From: Alexandr Miloslavskiy <alexandr.miloslavskiy@xxxxxxxxxxx> > > 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 <alexandr.miloslavskiy@xxxxxxxxxxx> 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 { > <VCPKGArch Condition="'\$(Platform)'=='Win32'">x86-windows</VCPKGArch> > <VCPKGArch Condition="'\$(Platform)'!='Win32'">x64-windows</VCPKGArch> > <VCPKGArchDirectory>$cdup\\compat\\vcbuild\\vcpkg\\installed\\\$(VCPKGArch)</VCPKGArchDirectory> > - <VCPKGBinDirectory Condition="'\(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\bin</VCPKGBinDirectory> > - <VCPKGLibDirectory Condition="'\(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\lib</VCPKGLibDirectory> > - <VCPKGBinDirectory Condition="'\(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\bin</VCPKGBinDirectory> > - <VCPKGLibDirectory Condition="'\(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\lib</VCPKGLibDirectory> > + <VCPKGBinDirectory Condition="'\$(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\bin</VCPKGBinDirectory> > + <VCPKGLibDirectory Condition="'\$(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\lib</VCPKGLibDirectory> > + <VCPKGBinDirectory Condition="'\$(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\bin</VCPKGBinDirectory> > + <VCPKGLibDirectory Condition="'\$(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\lib</VCPKGLibDirectory> > <VCPKGIncludeDirectory>\$(VCPKGArchDirectory)\\include</VCPKGIncludeDirectory> > - <VCPKGLibs Condition="'\(Configuration)'=='Debug'">$libs_debug</VCPKGLibs> > - <VCPKGLibs Condition="'\(Configuration)'!='Debug'">$libs_release</VCPKGLibs> > + <VCPKGLibs Condition="'\$(Configuration)'=='Debug'">$libs_debug</VCPKGLibs> > + <VCPKGLibs Condition="'\$(Configuration)'!='Debug'">$libs_release</VCPKGLibs> > </PropertyGroup> > <Import Project="\$(VCTargetsPath)\\Microsoft.Cpp.Default.props" /> > <PropertyGroup Condition="'\$(Configuration)'=='Debug'" Label="Configuration"> > -- > gitgitgadget >