From 44320a210b465345e3d3ef676f56ee86b64d6aca Mon Sep 17 00:00:00 2001 From: DRC Date: Fri, 15 May 2015 18:23:59 +0000 Subject: [PATCH] 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 --- ChangeLog.txt | 4 ++++ turbojpeg.c | 44 ++++++++++++++++++++++---------------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index f31938e3..309b5e21 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -42,6 +42,10 @@ builds of libjpeg-turbo to incorrectly encode a few specific test images when 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 e8b156a0..4442503f 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 @@ DLLEXPORT int DLLCALL tjCompress2(tjhandle handle, unsigned char *srcBuf, 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 @@ DLLEXPORT int DLLCALL tjEncodeYUVPlanes(tjhandle handle, unsigned char *srcBuf, 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 @@ DLLEXPORT int DLLCALL tjCompressFromYUVPlanes(tjhandle handle, 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 @@ DLLEXPORT int DLLCALL tjDecompress2(tjhandle handle, unsigned char *jpegBuf, || 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 @@ DLLEXPORT int DLLCALL tjDecodeYUVPlanes(tjhandle handle, 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 @@ DLLEXPORT int DLLCALL tjDecompressToYUVPlanes(tjhandle handle, || 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 @@ DLLEXPORT int DLLCALL tjTransform(tjhandle handle, unsigned char *jpegBuf, || 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)) {