Eliminate all of the __memalign() mess and just handle the alignment ourselves


git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@317 632fc199-4ca6-4c93-a231-07263d6284db
diff --git a/turbojpegl.c b/turbojpegl.c
index 7e812fc..9dd6eb6 100644
--- a/turbojpegl.c
+++ b/turbojpegl.c
@@ -23,32 +23,6 @@
 #include <jerror.h>
 #include <setjmp.h>
 #include "./turbojpeg.h"
-#ifdef sun
-#include <malloc.h>
-#endif
-
-void *__memalign(size_t boundary, size_t size)
-{
-	#ifdef _WIN32
-	return _aligned_malloc(size, boundary);
-	#else
-	#ifdef __APPLE__
-	return malloc(size);
-	#else
-	#ifdef sun
-	return memalign(boundary, size);
-	#else
-	void *ptr=NULL;
-	posix_memalign(&ptr, boundary, size);
-	return ptr;
-	#endif
-	#endif
-	#endif
-}
-
-#ifndef _WIN32
-#define _aligned_free(addr) free(addr)
-#endif
 
 #ifndef min
  #define min(a,b) ((a)<(b)?(a):(b))
@@ -204,9 +178,9 @@
 		for(i=0; i<MAX_COMPONENTS; i++)
 		{
 			if(tmpbuf[i]!=NULL) free(tmpbuf[i]);
-			if(_tmpbuf[i]!=NULL) _aligned_free(_tmpbuf[i]);
+			if(_tmpbuf[i]!=NULL) free(_tmpbuf[i]);
 			if(tmpbuf2[i]!=NULL) free(tmpbuf2[i]);
-			if(_tmpbuf2[i]!=NULL) _aligned_free(_tmpbuf2[i]);
+			if(_tmpbuf2[i]!=NULL) free(_tmpbuf2[i]);
 			if(outbuf[i]!=NULL) free(outbuf[i]);
 		}
 		return -1;
@@ -255,24 +229,32 @@
 		for(i=0; i<cinfo->num_components; i++)
 		{
 			compptr=&cinfo->comp_info[i];
-			_tmpbuf[i]=(JSAMPLE *)__memalign(16,
+			_tmpbuf[i]=(JSAMPLE *)malloc(
 				PAD((compptr->width_in_blocks*cinfo->max_h_samp_factor*DCTSIZE)
-					/compptr->h_samp_factor, 16) * cinfo->max_v_samp_factor);
+					/compptr->h_samp_factor, 16) * cinfo->max_v_samp_factor + 16);
 			if(!_tmpbuf[i]) _throw("Memory allocation failure");
 			tmpbuf[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*cinfo->max_v_samp_factor);
 			if(!tmpbuf[i]) _throw("Memory allocation failure");
 			for(row=0; row<cinfo->max_v_samp_factor; row++)
-				tmpbuf[i][row]=&_tmpbuf[i][
+			{
+				unsigned char *_tmpbuf_aligned=
+					(unsigned char *)PAD((size_t)_tmpbuf[i], 16);
+				tmpbuf[i][row]=&_tmpbuf_aligned[
 					PAD((compptr->width_in_blocks*cinfo->max_h_samp_factor*DCTSIZE)
 						/compptr->h_samp_factor, 16) * row];
-			_tmpbuf2[i]=(JSAMPLE *)__memalign(16,
-				PAD(compptr->width_in_blocks*DCTSIZE, 16) * compptr->v_samp_factor);
+			}
+			_tmpbuf2[i]=(JSAMPLE *)malloc(PAD(compptr->width_in_blocks*DCTSIZE, 16)
+				* compptr->v_samp_factor + 16);
 			if(!_tmpbuf2[i]) _throw("Memory allocation failure");
 			tmpbuf2[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*compptr->v_samp_factor);
 			if(!tmpbuf2[i]) _throw("Memory allocation failure");
 			for(row=0; row<compptr->v_samp_factor; row++)
-				tmpbuf2[i][row]=&_tmpbuf2[i][
+			{
+				unsigned char *_tmpbuf2_aligned=
+					(unsigned char *)PAD((size_t)_tmpbuf2[i], 16);
+				tmpbuf2[i][row]=&_tmpbuf2_aligned[
 					PAD(compptr->width_in_blocks*DCTSIZE, 16) * row];
+			}
 			cw[i]=pw*compptr->h_samp_factor/cinfo->max_h_samp_factor;
 			ch[i]=ph*compptr->v_samp_factor/cinfo->max_v_samp_factor;
 			outbuf[i]=(JSAMPROW *)malloc(sizeof(JSAMPROW)*ch[i]);
@@ -323,9 +305,9 @@
 	for(i=0; i<MAX_COMPONENTS; i++)
 	{
 		if(tmpbuf[i]!=NULL) free(tmpbuf[i]);
-		if(_tmpbuf[i]!=NULL) _aligned_free(_tmpbuf[i]);
+		if(_tmpbuf[i]!=NULL) free(_tmpbuf[i]);
 		if(tmpbuf2[i]!=NULL) free(tmpbuf2[i]);
-		if(_tmpbuf2[i]!=NULL) _aligned_free(_tmpbuf2[i]);
+		if(_tmpbuf2[i]!=NULL) free(_tmpbuf2[i]);
 		if(outbuf[i]!=NULL) free(outbuf[i]);
 	}
 	return 0;