Merge branch 'master' into dev
diff --git a/ChangeLog.md b/ChangeLog.md
index 3a904a5..ccf98a8 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -119,6 +119,9 @@
 images by approximately 70-100% and the decompression of RGB images by
 approximately 2-3.5x.
 
+14. Fixed a build error when building with older MinGW releases (regression
+caused by 1.5.1[7].)
+
 
 1.5.3
 =====
diff --git a/jmemmgr.c b/jmemmgr.c
index 192a58c..508ca74 100644
--- a/jmemmgr.c
+++ b/jmemmgr.c
@@ -32,7 +32,7 @@
 #include "jinclude.h"
 #include "jpeglib.h"
 #include "jmemsys.h"            /* import the system-dependent declarations */
-#ifndef _WIN32
+#if !defined(_MSC_VER) || _MSC_VER > 1600
 #include <stdint.h>
 #endif
 #include <limits.h>
diff --git a/release/installer.nsi.in b/release/installer.nsi.in
index ec03f5e..02db342 100755
--- a/release/installer.nsi.in
+++ b/release/installer.nsi.in
@@ -1,7 +1,7 @@
 !include x64.nsh
 Name "@CMAKE_PROJECT_NAME@ SDK for @INST_PLATFORM@"
 OutFile "@CMAKE_CURRENT_BINARY_DIR@\${BUILDDIR}@INST_NAME@.exe"
-InstallDir @INST_DIR@
+InstallDir "@INST_DIR@"
 
 SetCompressor bzip2
 
diff --git a/simd/arm/jsimd.c b/simd/arm/jsimd.c
index 8fcd6e3..d118bea 100644
--- a/simd/arm/jsimd.c
+++ b/simd/arm/jsimd.c
@@ -3,7 +3,7 @@
  *
  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
  * Copyright (C) 2011, Nokia Corporation and/or its subsidiary(-ies).
- * Copyright (C) 2009-2011, 2013-2014, 2016, D. R. Commander.
+ * Copyright (C) 2009-2011, 2013-2014, 2016, 2018, D. R. Commander.
  * Copyright (C) 2015-2016, Matthieu Darbois.
  *
  * Based on the x86 SIMD extension for IJG JPEG library,
@@ -102,7 +102,9 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 #if !defined(__ARM_NEON__) && defined(__linux__) || defined(ANDROID) || defined(__ANDROID__)
   int bufsize = 1024; /* an initial guess for the line buffer size limit */
 #endif
@@ -125,6 +127,7 @@
   }
 #endif
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCENEON");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -135,6 +138,7 @@
   env = getenv("JSIMD_NOHUFFENC");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_huffman = 0;
+#endif
 }
 
 GLOBAL(int)
diff --git a/simd/arm64/jsimd.c b/simd/arm64/jsimd.c
index b7f019d..54806e5 100644
--- a/simd/arm64/jsimd.c
+++ b/simd/arm64/jsimd.c
@@ -3,7 +3,7 @@
  *
  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
  * Copyright (C) 2011, Nokia Corporation and/or its subsidiary(-ies).
- * Copyright (C) 2009-2011, 2013-2014, 2016, D. R. Commander.
+ * Copyright (C) 2009-2011, 2013-2014, 2016, 2018, D. R. Commander.
  * Copyright (C) 2015-2016, Matthieu Darbois.
  *
  * Based on the x86 SIMD extension for IJG JPEG library,
@@ -122,7 +122,9 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 #if defined(__linux__) || defined(ANDROID) || defined(__ANDROID__)
   int bufsize = 1024; /* an initial guess for the line buffer size limit */
 #endif
@@ -141,6 +143,7 @@
   }
 #endif
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCENEON");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -161,6 +164,7 @@
     simd_features |= JSIMD_FASTST3;
   if ((env != NULL) && (strcmp(env, "0") == 0))
     simd_features &= ~JSIMD_FASTST3;
+#endif
 }
 
 GLOBAL(int)
diff --git a/simd/i386/jsimd.c b/simd/i386/jsimd.c
index 1e22384..d251531 100644
--- a/simd/i386/jsimd.c
+++ b/simd/i386/jsimd.c
@@ -42,13 +42,16 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 
   if (simd_support != ~0U)
     return;
 
   simd_support = jpeg_simd_cpu_support();
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCEMMX");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -71,6 +74,7 @@
   env = getenv("JSIMD_NOHUFFENC");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_huffman = 0;
+#endif
 }
 
 GLOBAL(int)
diff --git a/simd/loongson/jsimd.c b/simd/loongson/jsimd.c
index 0f5c0e8..132798a 100644
--- a/simd/loongson/jsimd.c
+++ b/simd/loongson/jsimd.c
@@ -2,7 +2,7 @@
  * jsimd_loongson.c
  *
  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright (C) 2009-2011, 2014, 2016, D. R. Commander.
+ * Copyright (C) 2009-2011, 2014, 2016, 2018, D. R. Commander.
  * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
  * Copyright (C) 2015, Matthieu Darbois.
  * Copyright (C) 2016-2017, Loongson Technology Corporation Limited, BeiJing.
@@ -34,17 +34,21 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 
   if (simd_support != ~0U)
     return;
 
   simd_support |= JSIMD_MMI;
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCENONE");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_support = 0;
+#endif
 }
 
 GLOBAL(int)
diff --git a/simd/mips/jsimd.c b/simd/mips/jsimd.c
index a9c7ebd..1ff1053 100644
--- a/simd/mips/jsimd.c
+++ b/simd/mips/jsimd.c
@@ -2,7 +2,7 @@
  * jsimd_mips.c
  *
  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright (C) 2009-2011, 2014, 2016, D. R. Commander.
+ * Copyright (C) 2009-2011, 2014, 2016, 2018, D. R. Commander.
  * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
  * Copyright (C) 2015, Matthieu Darbois.
  *
@@ -64,7 +64,9 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 
   if (simd_support != ~0U)
     return;
@@ -81,6 +83,7 @@
     return;
 #endif
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCEDSPR2");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -88,6 +91,7 @@
   env = getenv("JSIMD_FORCENONE");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_support = 0;
+#endif
 }
 
 static const int mips_idct_ifast_coefs[4] = {
diff --git a/simd/powerpc/jsimd.c b/simd/powerpc/jsimd.c
index 53f1a7d..84d58e5 100644
--- a/simd/powerpc/jsimd.c
+++ b/simd/powerpc/jsimd.c
@@ -2,7 +2,7 @@
  * jsimd_powerpc.c
  *
  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright (C) 2009-2011, 2014-2016, D. R. Commander.
+ * Copyright (C) 2009-2011, 2014-2016, 2018, D. R. Commander.
  * Copyright (C) 2015, Matthieu Darbois.
  *
  * Based on the x86 SIMD extension for IJG JPEG library,
@@ -111,7 +111,9 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 #if !defined(__ALTIVEC__) && (defined(__linux__) || defined(ANDROID) || defined(__ANDROID__))
   int bufsize = 1024; /* an initial guess for the line buffer size limit */
 #elif defined(__amigaos4__)
@@ -144,6 +146,7 @@
     simd_support |= JSIMD_ALTIVEC;
 #endif
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCEALTIVEC");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -151,6 +154,7 @@
   env = getenv("JSIMD_FORCENONE");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_support = 0;
+#endif
 }
 
 GLOBAL(int)
diff --git a/simd/x86_64/jsimd.c b/simd/x86_64/jsimd.c
index 03a4da3..4125248 100644
--- a/simd/x86_64/jsimd.c
+++ b/simd/x86_64/jsimd.c
@@ -42,13 +42,16 @@
 LOCAL(void)
 init_simd(void)
 {
+#ifndef NO_GETENV
   char *env = NULL;
+#endif
 
   if (simd_support != ~0U)
     return;
 
   simd_support = jpeg_simd_cpu_support();
 
+#ifndef NO_GETENV
   /* Force different settings through environment variables */
   env = getenv("JSIMD_FORCESSE2");
   if ((env != NULL) && (strcmp(env, "1") == 0))
@@ -62,6 +65,7 @@
   env = getenv("JSIMD_NOHUFFENC");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_huffman = 0;
+#endif
 }
 
 GLOBAL(int)
diff --git a/turbojpeg.c b/turbojpeg.c
index bb061a2..aa7d7a7 100644
--- a/turbojpeg.c
+++ b/turbojpeg.c
@@ -626,9 +626,11 @@
   cinfo->image_width = width;
   cinfo->image_height = height;
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (flags & TJFLAG_NOREALLOC) {
     alloc = 0;  *jpegSize = tjBufSize(width, height, jpegSubsamp);
@@ -724,9 +726,11 @@
   cinfo->image_width = width;
   cinfo->image_height = height;
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (setCompDefaults(cinfo, pixelFormat, subsamp, -1, flags) == -1) return -1;
 
@@ -932,9 +936,11 @@
   cinfo->image_width = width;
   cinfo->image_height = height;
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (flags & TJFLAG_NOREALLOC) {
     alloc = 0;  *jpegSize = tjBufSize(width, height, subsamp);
@@ -1210,9 +1216,11 @@
       pitch < 0 || height < 0 || pixelFormat < 0 || pixelFormat >= TJ_NUMPF)
     _throw("tjDecompress2(): Invalid argument");
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (setjmp(this->jerr.setjmp_buffer)) {
     /* If we get here, the JPEG code has signaled an error. */
@@ -1376,9 +1384,11 @@
   dinfo->image_width = width;
   dinfo->image_height = height;
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (setDecodeDefaults(dinfo, pixelFormat, subsamp, flags) == -1) {
     retval = -1;  goto bailout;
@@ -1542,9 +1552,11 @@
       width < 0 || height < 0)
     _throw("tjDecompressToYUVPlanes(): Invalid argument");
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if (setjmp(this->jerr.setjmp_buffer)) {
     /* If we get here, the JPEG code has signaled an error. */
@@ -1796,9 +1808,11 @@
       dstSizes == NULL || t == NULL || flags < 0)
     _throw("tjTransform(): Invalid argument");
 
+#ifndef NO_PUTENV
   if (flags & TJFLAG_FORCEMMX) putenv("JSIMD_FORCEMMX=1");
   else if (flags & TJFLAG_FORCESSE) putenv("JSIMD_FORCESSE=1");
   else if (flags & TJFLAG_FORCESSE2) putenv("JSIMD_FORCESSE2=1");
+#endif
 
   if ((xinfo =
        (jpeg_transform_info *)malloc(sizeof(jpeg_transform_info) * n)) == NULL)