diff --git a/ChangeLog.txt b/ChangeLog.txt
index f31938e..309b5e2 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -42,6 +42,10 @@
 quality=98, an optimized Huffman table, and the slow integer forward DCT were
 used.
 
+[8] Resolved an issue whereby the "official" TurboJPEG static library for OS X/
+iOS would produce an undefined symbol error (_putenv$UNIX2003) when attempting
+to link the library with an i386 iOS application for the iOS simulator.
+
 
 1.4.0
 =====
diff --git a/turbojpeg.c b/turbojpeg.c
index e8b156a..4442503 100644
--- a/turbojpeg.c
+++ b/turbojpeg.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C)2009-2014 D. R. Commander.  All Rights Reserved.
+ * Copyright (C)2009-2015 D. R. Commander.  All Rights Reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -754,9 +754,9 @@
 	cinfo->image_width=width;
 	cinfo->image_height=height;
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(flags&TJFLAG_NOREALLOC)
 	{
@@ -870,9 +870,9 @@
 	cinfo->image_width=width;
 	cinfo->image_height=height;
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(setCompDefaults(cinfo, pixelFormat, subsamp, -1, flags)==-1) return -1;
 
@@ -1061,9 +1061,9 @@
 	cinfo->image_width=width;
 	cinfo->image_height=height;
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(flags&TJFLAG_NOREALLOC)
 	{
@@ -1331,9 +1331,9 @@
 		|| height<0 || pixelFormat<0 || pixelFormat>=TJ_NUMPF)
 		_throw("tjDecompress2(): Invalid argument");
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(setjmp(this->jerr.setjmp_buffer))
 	{
@@ -1526,9 +1526,9 @@
 	dinfo->image_width=width;
 	dinfo->image_height=height;
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(setDecodeDefaults(dinfo, pixelFormat, subsamp, flags)==-1)
 	{
@@ -1699,9 +1699,9 @@
 		|| height<0)
 		_throw("tjDecompressToYUVPlanes(): Invalid argument");
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(setjmp(this->jerr.setjmp_buffer))
 	{
@@ -1951,9 +1951,9 @@
 		|| t==NULL || flags<0)
 		_throw("tjTransform(): Invalid argument");
 
-	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");
+	if(flags&TJFLAG_FORCEMMX) setenv("JSIMD_FORCEMMX", "1", 1);
+	else if(flags&TJFLAG_FORCESSE) setenv("JSIMD_FORCESSE", "1", 1);
+	else if(flags&TJFLAG_FORCESSE2) setenv("JSIMD_FORCESSE2", "1", 1);
 
 	if(setjmp(this->jerr.setjmp_buffer))
 	{
