Unless you define _ANSI_SOURCE, then putenv() on Mac is renamed to putenv$UNIX2003(), and this causes problems when trying to link an i386 iOS application (for the simulator) against the TurboJPEG static library. It's easiest to just use setenv() instead.
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.4.x@1548 632fc199-4ca6-4c93-a231-07263d6284db
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))
{