[libpng15] Fix Windows builds, add pngstest to Visual Studio and OpenWatcom
diff --git a/contrib/libtests/pngstest.c b/contrib/libtests/pngstest.c
index 139a552..9b983ce 100644
--- a/contrib/libtests/pngstest.c
+++ b/contrib/libtests/pngstest.c
@@ -3,7 +3,7 @@
  *
  * Test for the PNG 'simplified' APIs.
  */
-#define _ISOC99_SOURCE 1
+#define _ISOC90_SOURCE 1
 #define MALLOC_CHECK_ 2/*glibc facility: turn on debugging*/
 
 #include <stddef.h>
@@ -14,25 +14,31 @@
 #include <ctype.h>
 #include <math.h>
 
-#include <unistd.h>
-#include <fenv.h>
-
 #include "../../png.h"
 
 #include "../sRGBtables/sRGB.h"
 
+/* Math support - neither Cygwin nor Visual Studio have C99 support and we need
+ * a predictable rounding function, so make one here:
+ */
+static double
+closestinteger(double x)
+{
+   return floor(x + .5);
+}
+
 /* Cast support: remove GCC whines. */
 static png_byte
 u8d(double d)
 {
-   d = nearbyint(d);
+   d = closestinteger(d);
    return (png_byte)d;
 }
 
 static png_uint_16
 u16d(double d)
 {
-   d = nearbyint(d);
+   d = closestinteger(d);
    return (png_uint_16)d;
 }
 
@@ -46,17 +52,26 @@
 }
 
 static png_byte
-isRGB(png_uint_16 fixed_linear)
+isRGB(int fixed_linear)
 {
    return sRGB(fixed_linear / 65535.);
 }
 
 static png_uint_16
-ilineara(png_byte fixed_srgb, png_byte alpha)
+ilineara(int fixed_srgb, int alpha)
 {
    return u16d((257 * alpha) * linear_from_sRGB(fixed_srgb / 255.));
 }
 
+static double
+YfromRGBint(int ir, int ig, int ib)
+{
+   double r = ir;
+   double g = ig;
+   double b = ib;
+   return YfromRGB(r, g, b);
+}
+
 #define READ_FILE 1      /* else memory */
 #define USE_STDIO 2      /* else use file name */
 #define USE_BACKGROUND 4 /* else composite in place */
@@ -264,7 +279,7 @@
 
 /* Make sure 16 bytes match the given byte. */
 static int
-check16(png_const_bytep bp, png_byte b)
+check16(png_const_bytep bp, int b)
 {
    int i = 16;
 
@@ -411,7 +426,8 @@
                /* Because the 'Y' calculation is linear the pre-multiplication
                 * of the r16,g16,b16 values can be ignored.
                 */
-               pixel->y16 = u16d(YfromRGB(pixel->r16, pixel->g16, pixel->b16));
+               pixel->y16 = u16d(YfromRGBint(pixel->r16, pixel->g16,
+                  pixel->b16));
             }
 
             else
@@ -531,18 +547,18 @@
  * done in the simplified API code using the correct sRGB tables.  This needs
  * to be made consistent.
  */
-static unsigned int error_to_linear = 811; /* by experiment */
-static unsigned int error_to_linear_grayscale = 424; /* by experiment */
-static unsigned int error_to_sRGB = 6; /* by experiment */
-static unsigned int error_to_sRGB_grayscale = 11; /* by experiment */
-static unsigned int error_in_compose = 0;
-static unsigned int error_via_linear = 14; /* by experiment */
-static unsigned int error_in_premultiply = 1;
+static int error_to_linear = 811; /* by experiment */
+static int error_to_linear_grayscale = 424; /* by experiment */
+static int error_to_sRGB = 6; /* by experiment */
+static int error_to_sRGB_grayscale = 11; /* by experiment */
+static int error_in_compose = 0;
+static int error_via_linear = 14; /* by experiment */
+static int error_in_premultiply = 1;
 
 static const char *
 cmppixel(Pixel *a, Pixel *b, const png_color *background, int via_linear)
 {
-   unsigned int error_limit = 0;
+   int error_limit = 0;
 
    if (b->format & PNG_FORMAT_FLAG_LINEAR)
    {
@@ -670,14 +686,14 @@
              */
             if (a->format & PNG_FORMAT_FLAG_COLOR)
             {
-               double r = nearbyint((65535. * a->r16) / a->a16)/65535;
-               double g = nearbyint((65535. * a->g16) / a->a16)/65535;
-               double blue = nearbyint((65535. * a->b16) / a->a16)/65535;
+               double r = closestinteger((65535. * a->r16) / a->a16)/65535;
+               double g = closestinteger((65535. * a->g16) / a->a16)/65535;
+               double blue = closestinteger((65535. * a->b16) / a->a16)/65535;
 
                a->r16 = u16d(r * a->a16);
                a->g16 = u16d(g * a->a16);
                a->b16 = u16d(blue * a->a16);
-               a->y16 = u16d(YfromRGB(a->r16, a->g16, a->b16));
+               a->y16 = u16d(YfromRGBint(a->r16, a->g16, a->b16));
 
                a->r8 = u8d(r * 255);
                a->g8 = u8d(g * 255);
@@ -687,7 +703,7 @@
 
             else
             {
-               double y = nearbyint((65535. * a->y16) / a->a16)/65535.;
+               double y = closestinteger((65535. * a->y16) / a->a16)/65535.;
 
                a->b16 = a->g16 = a->r16 = a->y16 = u16d(y * a->a16);
                a->b8 = a->g8 = a->r8 = a->y8 = u8d(255 * y);
@@ -912,8 +928,6 @@
          return err;
       }
    }
-
-   return "not reached";
 }
 
 /* Basic image formats; control the data but not the layout thereof. */
@@ -1320,15 +1334,15 @@
             {
                long int cb = ftell(f);
 
-               if (cb >= 0)
+               if (cb >= 0 && (unsigned long int)cb < (size_t)~(size_t)0)
                {
-                  png_bytep b = malloc(cb);
+                  png_bytep b = malloc((size_t)cb);
 
                   if (b != NULL)
                   {
                      rewind(f);
 
-                     if (fread(b, cb, 1, f) == 1)
+                     if (fread(b, (size_t)cb, 1, f) == 1)
                      {
                         fclose(f);
                         image->input_memory_size = cb;
@@ -1406,7 +1420,7 @@
       static int counter = 0;
       char name[32];
 
-      sprintf(name, "TMP%d-%d.png", getpid(), ++counter);
+      sprintf(name, "TMP%d.png", ++counter);
 
       if (png_image_write_to_file(&image->image, name, convert_to_8bit,
          image->buffer+16, (png_int_32)image->stride))
@@ -1529,18 +1543,13 @@
 main(int argc, const char **argv)
 {
    png_uint_32 opts = 0;
-   png_uint_32 formats = ~0; /* a mask of formats to test */
+   png_uint_32 formats = (png_uint_32)~0; /* a mask of formats to test */
+   const char *touch = NULL;
    int log_pass = 0;
    int stride_extra = 0;
    int retval = 0;
    int c;
 
-   /* FE_TONEAREST is the IEEE754 round to nearest, preferring even, mode; i.e.
-    * everything rounds to the nearest value except that '.5' rounds to the
-    * nearest even value.
-    */
-   fesetround(FE_TONEAREST);
-
    for (c=1; c<argc; ++c)
    {
       const char *arg = argv[c];
@@ -1571,6 +1580,18 @@
          opts |= KEEP_GOING;
       else if (strcmp(arg, "--stop") == 0)
          opts &= ~KEEP_GOING;
+      else if (strcmp(arg, "--touch") == 0)
+      {
+         if (c+1 < argc)
+            touch = argv[++c];
+
+         else
+         {
+            fprintf(stderr, "%s: %s requires a file name argument\n",
+               argv[0], arg);
+            exit(1);
+         }
+      }
       else if (arg[0] == '+')
       {
          png_uint_32 format = formatof(arg+1);
@@ -1620,5 +1641,30 @@
       }
    }
 
+   if (retval == 0 && touch != NULL)
+   {
+      FILE *fsuccess = fopen(touch, "wt");
+
+      if (fsuccess != NULL)
+      {
+         int error = 0;
+         fprintf(fsuccess, "PNG simple API tests succeeded\n");
+         fflush(fsuccess);
+         error = ferror(fsuccess);
+
+         if (fclose(fsuccess) || error)
+         {
+            fprintf(stderr, "%s: write failed\n", touch);
+            exit(1);
+         }
+      }
+
+      else
+      {
+         fprintf(stderr, "%s: open failed\n", touch);
+         exit(1);
+      }
+   }
+
    return retval;
 }
diff --git a/pngread.c b/pngread.c
index 3d33f4e..e2df700 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1342,44 +1342,6 @@
 
             image->opaque = control;
             return 1;
-
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-            /* Prepare the reader to ignore all recognized chunks whose
-             * data will not be used, i.e., all chunks recognized by libpng
-             * except for IHDR, PLTE, IDAT, IEND, tRNS, bKGD, gAMA, cHRM,
-             * and sRGB.
-             *
-             * This provides a small performance improvement and eliminates
-             * any potential vulnerability to security problems in the unused
-             * chunks)
-             */
-            {
-                static /* const */ png_byte chunks_to_ignore[] = {
-                    104,  73,  83,  84, '\0',  /* hIST */
-                    105,  67,  67,  80, '\0',  /* iCCP */
-                    105,  84,  88, 116, '\0',  /* iTXt */
-                    111,  70,  70, 115, '\0',  /* oFFs */
-                    112,  67,  65,  76, '\0',  /* pCAL */
-                    112,  72,  89, 115, '\0',  /* pHYs */
-                    115,  66,  73,  84, '\0',  /* sBIT */
-                    115,  67,  65,  76, '\0',  /* sCAL */
-                    115,  80,  76,  84, '\0',  /* sPLT */
-                    116,  69,  88, 116, '\0',  /* tEXt */
-                    116,  73,  77,  69, '\0',  /* tIME */
-                    122,  84,  88, 116, '\0'   /* zTXt */
-                };
-
-                /* Ignore unknown chunks */
-                png_set_keep_unknown_chunks(png_ptr,
-                  1 /* PNG_HANDLE_CHUNK_NEVER */,
-                  NULL, 0);
-
-                /* Ignore known but unused chunks */
-                png_set_keep_unknown_chunks(png_ptr,
-                  1 /* PNG_HANDLE_CHUNK_NEVER */,
-                  chunks_to_ignore, sizeof(chunks_to_ignore)/5);
-             }
-#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
          }
 
          /* Error clean up */
@@ -1944,6 +1906,47 @@
          png_error(png_ptr, "png_read_image: unsupported transformation");
    }
 
+#  ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+      /* Prepare the reader to ignore all recognized chunks whose data will not
+       * be used, i.e., all chunks recognized by libpng except for those
+       * involved in basic image reading:
+       *
+       *    IHDR, PLTE, IDAT, IEND
+       *
+       * Or image data handling:
+       *
+       *    tRNS, bKGD, gAMA, cHRM, sRGB, iCCP and sBIT.
+       *
+       * This provides a small performance improvement and eliminates any
+       * potential vulnerability to security problems in the unused chunks.
+       *
+       * TODO: make it so that this is an explicit list to process, not a list
+       * to ignore?
+       */
+      {
+          static PNG_CONST png_byte chunks_to_ignore[] = {
+              104,  73,  83,  84, '\0',  /* hIST */
+              105,  84,  88, 116, '\0',  /* iTXt */
+              111,  70,  70, 115, '\0',  /* oFFs */
+              112,  67,  65,  76, '\0',  /* pCAL */
+              112,  72,  89, 115, '\0',  /* pHYs */
+              115,  67,  65,  76, '\0',  /* sCAL */
+              115,  80,  76,  84, '\0',  /* sPLT */
+              116,  69,  88, 116, '\0',  /* tEXt */
+              116,  73,  77,  69, '\0',  /* tIME */
+              122,  84,  88, 116, '\0'   /* zTXt */
+          };
+
+          /* Ignore unknown chunks */
+          png_set_keep_unknown_chunks(png_ptr, 1 /* PNG_HANDLE_CHUNK_NEVER */,
+            NULL, 0);
+
+          /* Ignore known but unused chunks */
+          png_set_keep_unknown_chunks(png_ptr, 1 /* PNG_HANDLE_CHUNK_NEVER */,
+            chunks_to_ignore, (sizeof chunks_to_ignore)/5);
+       }
+#  endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
+
    /* Update the 'info' structure and make sure the result is as required; first
     * make sure to turn on the interlace handling if it will be required
     * (because it can't be turned on *after* the call to png_read_update_info!)
diff --git a/pngwrite.c b/pngwrite.c
index f3aae4d..df91d9b 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -2028,7 +2028,7 @@
 #  endif
 
    /* That should have handled all (both) the transforms. */
-   if ((format & ~(PNG_FORMAT_FLAG_COLOR | PNG_FORMAT_FLAG_LINEAR |
+   if ((format & ~(png_uint_32)(PNG_FORMAT_FLAG_COLOR | PNG_FORMAT_FLAG_LINEAR |
          PNG_FORMAT_FLAG_ALPHA)) != 0)
       png_error(png_ptr, "png_write_image: unsupported transformation");
 
diff --git a/projects/owatcom/libpng.wpj b/projects/owatcom/libpng.wpj
index e2e591c..fe7583f 100644
--- a/projects/owatcom/libpng.wpj
+++ b/projects/owatcom/libpng.wpj
@@ -5,9 +5,9 @@
 1
 WRect
 256
-146
-8966
-9303
+0
+8960
+9294
 2
 MProject
 3
@@ -25,7 +25,7 @@
 MCommand
 19
 @type pngconfig.inf
-3
+4
 5
 WFileName
 10
@@ -39,54 +39,74 @@
 12
 pngvalid.tgt
 8
-WVList
-3
+WFileName
+12
+pngstest.tgt
 9
-VComponent
+WVList
+4
 10
+VComponent
+11
 WRect
 0
 0
-5644
-4183
+5638
+4174
 0
 0
-11
+12
 WFileName
 10
 libpng.tgt
 0
 0
-12
-VComponent
 13
+VComponent
+14
 WRect
 1280
-1560
-5644
-4183
+1550
+5638
+4174
 0
 0
-14
+15
 WFileName
 11
 pngtest.tgt
 0
 1
-15
-VComponent
 16
-WRect
-530
-507
-5644
-4183
-0
-0
+VComponent
 17
+WRect
+524
+497
+5638
+4174
+0
+0
+18
 WFileName
 12
 pngvalid.tgt
 0
 1
-9
+19
+VComponent
+20
+WRect
+2054
+2701
+5674
+4232
+0
+0
+21
+WFileName
+12
+pngstest.tgt
+0
+1
+19
diff --git a/projects/owatcom/pngstest.tgt b/projects/owatcom/pngstest.tgt
new file mode 100644
index 0000000..e589f02
--- /dev/null
+++ b/projects/owatcom/pngstest.tgt
@@ -0,0 +1,219 @@
+40
+targetIdent
+0
+MProject
+1
+MComponent
+0
+2
+WString
+4
+NEXE
+3
+WString
+5
+nc2en
+1
+0
+0
+4
+MCommand
+0
+5
+MCommand
+1035
+pngstest --log ../../contrib/pngsuite/basn0g01.png ../../contrib/pngsuite/basn0g02.png ../../contrib/pngsuite/basn0g04.png ../../contrib/pngsuite/basn0g08.png ../../contrib/pngsuite/basn0g16.png ../../contrib/pngsuite/basn2c08.png ../../contrib/pngsuite/basn2c16.png ../../contrib/pngsuite/basn3p01.png ../../contrib/pngsuite/basn3p02.png ../../contrib/pngsuite/basn3p04.png ../../contrib/pngsuite/basn3p08.png ../../contrib/pngsuite/basn4a08.png ../../contrib/pngsuite/basn4a16.png ../../contrib/pngsuite/basn6a08.png ../../contrib/pngsuite/basn6a16.png ../../contrib/pngsuite/ftbbn1g04.png ../../contrib/pngsuite/ftbbn2c16.png ../../contrib/pngsuite/ftbbn3p08.png ../../contrib/pngsuite/ftbgn2c16.png ../../contrib/pngsuite/ftbgn3p08.png ../../contrib/pngsuite/ftbrn2c08.png ../../contrib/pngsuite/ftbwn1g16.png ../../contrib/pngsuite/ftbwn3p08.png ../../contrib/pngsuite/ftbyn3p08.png ../../contrib/pngsuite/ftp0n1g08.png ../../contrib/pngsuite/ftp0n2c08.png ../../contrib/pngsuite/ftp0n3p08.png ../../contrib/pngsuite/ftp1n3p08.png
+6
+MItem
+12
+pngstest.exe
+7
+WString
+4
+NEXE
+8
+WVList
+6
+9
+MVState
+10
+WString
+7
+WINLINK
+11
+WString
+11
+?????Stack:
+1
+12
+WString
+4
+768k
+0
+13
+MVState
+14
+WString
+7
+WINLINK
+15
+WString
+28
+?????Library directories(;):
+1
+16
+WString
+8
+$(%zlib)
+0
+17
+MVState
+18
+WString
+7
+WINLINK
+19
+WString
+18
+?????Libraries(,):
+1
+20
+WString
+19
+libpng.lib zlib.lib
+0
+21
+MVState
+22
+WString
+7
+WINLINK
+23
+WString
+11
+?????Stack:
+0
+24
+WString
+4
+768k
+0
+25
+MVState
+26
+WString
+7
+WINLINK
+27
+WString
+28
+?????Library directories(;):
+0
+28
+WString
+8
+$(%zlib)
+0
+29
+MVState
+30
+WString
+7
+WINLINK
+31
+WString
+18
+?????Libraries(,):
+0
+32
+WString
+19
+libpng.lib zlib.lib
+0
+33
+WVList
+1
+34
+ActionStates
+35
+WString
+4
+&Run
+36
+WVList
+0
+-1
+1
+1
+0
+37
+WPickList
+2
+38
+MItem
+3
+*.c
+39
+WString
+4
+COBJ
+40
+WVList
+2
+41
+MVState
+42
+WString
+3
+WCC
+43
+WString
+25
+n????Include directories:
+1
+44
+WString
+39
+"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt"
+0
+45
+MVState
+46
+WString
+3
+WCC
+47
+WString
+25
+n????Include directories:
+0
+48
+WString
+39
+"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt"
+0
+49
+WVList
+0
+-1
+1
+1
+0
+50
+MItem
+33
+..\..\contrib\libtests\pngstest.c
+51
+WString
+4
+COBJ
+52
+WVList
+0
+53
+WVList
+0
+38
+1
+1
+0
diff --git a/projects/vstudio/pngstest/pngstest.vcxproj b/projects/vstudio/pngstest/pngstest.vcxproj
new file mode 100644
index 0000000..58d7236
--- /dev/null
+++ b/projects/vstudio/pngstest/pngstest.vcxproj
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug Library|Win32">
+      <Configuration>Debug Library</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release Library|Win32">
+      <Configuration>Release Library</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>pngstest</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="$(SolutionDir)\zlib.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <CustomBuildAfterTargets />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <CustomBuildAfterTargets />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <CustomBuildAfterTargets />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <CustomBuildAfterTargets />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <MinimalRebuild>false</MinimalRebuild>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <Optimization>Disabled</Optimization>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
+      <CompileAsManaged>false</CompileAsManaged>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <StringPooling>true</StringPooling>
+      <FunctionLevelLinking>false</FunctionLevelLinking>
+      <BrowseInformation>true</BrowseInformation>
+      <FloatingPointExceptions>false</FloatingPointExceptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>libpng15.lib;zlib.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
+    </Link>
+    <CustomBuildStep>
+      <Message>Executing libpng simplified API test program</Message>
+      <Command>"$(OutDir)pngstest.exe" --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn1g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn1g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n1g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png</Command>
+      <Outputs>$(IntDir)pngstest.out</Outputs>
+      <Inputs>$(OutDir)pngstest.exe</Inputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <MinimalRebuild>false</MinimalRebuild>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <Optimization>Disabled</Optimization>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
+      <CompileAsManaged>false</CompileAsManaged>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <StringPooling>true</StringPooling>
+      <FunctionLevelLinking>false</FunctionLevelLinking>
+      <BrowseInformation>true</BrowseInformation>
+      <FloatingPointExceptions>false</FloatingPointExceptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>libpng15.lib;zlib.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
+    </Link>
+    <CustomBuildStep>
+      <Message>Executing libpng simplified API test program</Message>
+      <Command>"$(OutDir)pngstest.exe" --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn1g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn1g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n1g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png</Command>
+      <Outputs>$(IntDir)pngstest.out</Outputs>
+      <Inputs>$(OutDir)pngstest.exe</Inputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level4</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <Optimization>Full</Optimization>
+      <FunctionLevelLinking>false</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
+      <CompileAsManaged>false</CompileAsManaged>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <StringPooling>true</StringPooling>
+      <MinimalRebuild>false</MinimalRebuild>
+      <BrowseInformation>true</BrowseInformation>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <FloatingPointExceptions>false</FloatingPointExceptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>libpng15.lib;zlib.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+    </Link>
+    <CustomBuildStep>
+      <Message>Executing libpng simplified API test program</Message>
+      <Command>"$(OutDir)pngstest.exe" --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn1g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn1g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n1g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png</Command>
+      <Outputs>$(IntDir)pngstest.out</Outputs>
+      <Inputs>$(OutDir)pngstest.exe</Inputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">
+    <ClCompile>
+      <WarningLevel>Level4</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <Optimization>Full</Optimization>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>false</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4996;4127</DisableSpecificWarnings>
+      <CompileAsManaged>false</CompileAsManaged>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <StringPooling>true</StringPooling>
+      <MinimalRebuild>false</MinimalRebuild>
+      <BrowseInformation>true</BrowseInformation>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <FloatingPointExceptions>false</FloatingPointExceptions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>libpng15.lib;zlib.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+    </Link>
+    <CustomBuildStep>
+      <Message>Executing libpng simplified API test program</Message>
+      <Command>"$(OutDir)pngstest.exe" --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn1g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn1g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n1g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png</Command>
+      <Outputs>$(IntDir)pngstest.out</Outputs>
+      <Inputs>$(OutDir)pngstest.exe</Inputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\contrib\libtests\pngstest.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/projects/vstudio/pngvalid/pngvalid.vcxproj b/projects/vstudio/pngvalid/pngvalid.vcxproj
index bd85806..5173cb0 100644
--- a/projects/vstudio/pngvalid/pngvalid.vcxproj
+++ b/projects/vstudio/pngvalid/pngvalid.vcxproj
@@ -204,7 +204,6 @@
     </Link>
     <CustomBuildStep>
       <Message>Executing PNG validation program</Message>
-      <Command>$(OutDir)pngvalid.exe ..\..\..\pngvalid.png $(IntDir)pngout.png</Command>
       <Command>"$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out"</Command>
       <Outputs>$(IntDir)pngvalid.out</Outputs>
       <Inputs>$(OutDir)pngvalid.exe</Inputs>
diff --git a/projects/vstudio/vstudio.sln b/projects/vstudio/vstudio.sln
index fad771b..215ed0e 100644
--- a/projects/vstudio/vstudio.sln
+++ b/projects/vstudio/vstudio.sln
@@ -2,28 +2,35 @@
 # Visual Studio 2010
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}"
 	ProjectSection(ProjectDependencies) = postProject
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867} = {64CE4900-97EA-2DD5-4226-F2E36FFF2867}
+		{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}"
 	ProjectSection(ProjectDependencies) = postProject
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867} = {64CE4900-97EA-2DD5-4226-F2E36FFF2867}
+		{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
 		{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{64CE4900-97EA-2DD5-4226-F2E36FFF2867}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}"
 	ProjectSection(ProjectDependencies) = postProject
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867} = {64CE4900-97EA-2DD5-4226-F2E36FFF2867}
+		{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
 		{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}"
+	ProjectSection(ProjectDependencies) = postProject
+		{60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF}
+		{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35}
+		{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E}
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug Library|Win32 = Debug Library|Win32
@@ -48,14 +55,14 @@
 		{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.Build.0 = Release Library|Win32
 		{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.ActiveCfg = Release|Win32
 		{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.Build.0 = Release|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Debug Library|Win32.ActiveCfg = Debug Library|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Debug Library|Win32.Build.0 = Debug Library|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Debug|Win32.ActiveCfg = Debug|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Debug|Win32.Build.0 = Debug|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Release Library|Win32.ActiveCfg = Release Library|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Release Library|Win32.Build.0 = Release Library|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Release|Win32.ActiveCfg = Release|Win32
-		{64CE4900-97EA-2DD5-4226-F2E36FFF2867}.Release|Win32.Build.0 = Release|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.Build.0 = Debug Library|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.Build.0 = Debug|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.ActiveCfg = Release Library|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.Build.0 = Release Library|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.ActiveCfg = Release|Win32
+		{60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.Build.0 = Release|Win32
 		{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.ActiveCfg = Debug Library|Win32
 		{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.Build.0 = Debug Library|Win32
 		{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.ActiveCfg = Debug|Win32
@@ -72,6 +79,14 @@
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.Build.0 = Release|Win32
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.ActiveCfg = Release|Win32
 		{EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.Build.0 = Release|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.Build.0 = Debug Library|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.Build.0 = Debug|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.ActiveCfg = Release Library|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.Build.0 = Release Library|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.ActiveCfg = Release|Win32
+		{277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE