| Index: third_party/libjpeg_turbo/jmemmgr.c
|
| ===================================================================
|
| --- third_party/libjpeg_turbo/jmemmgr.c (revision 95020)
|
| +++ third_party/libjpeg_turbo/jmemmgr.c (working copy)
|
| @@ -37,6 +37,15 @@
|
| #endif
|
|
|
|
|
| +LOCAL(size_t)
|
| +round_up_pow2 (size_t a, size_t b)
|
| +/* a rounded up to the next multiple of b, i.e. ceil(a/b)*b */
|
| +/* Assumes a >= 0, b > 0, and b is a power of 2 */
|
| +{
|
| + return ((a + b - 1) & (~(b - 1)));
|
| +}
|
| +
|
| +
|
| /*
|
| * Some important notes:
|
| * The allocation routines provided here must never return NULL.
|
| @@ -265,7 +274,7 @@
|
| * and so that algorithms can straddle outside the proper area up
|
| * to the next alignment.
|
| */
|
| - sizeofobject = jround_up(sizeofobject, ALIGN_SIZE);
|
| + sizeofobject = round_up_pow2(sizeofobject, ALIGN_SIZE);
|
|
|
| /* Check for unsatisfiable request (do now to ensure no overflow below) */
|
| if ((SIZEOF(small_pool_hdr) + sizeofobject + ALIGN_SIZE - 1) > MAX_ALLOC_CHUNK)
|
| @@ -354,7 +363,7 @@
|
| * algorithms can straddle outside the proper area up to the next
|
| * alignment.
|
| */
|
| - sizeofobject = jround_up(sizeofobject, ALIGN_SIZE);
|
| + sizeofobject = round_up_pow2(sizeofobject, ALIGN_SIZE);
|
|
|
| /* Check for unsatisfiable request (do now to ensure no overflow below) */
|
| if ((SIZEOF(large_pool_hdr) + sizeofobject + ALIGN_SIZE - 1) > MAX_ALLOC_CHUNK)
|
| @@ -420,7 +429,7 @@
|
| /* Make sure each row is properly aligned */
|
| if ((ALIGN_SIZE % SIZEOF(JSAMPLE)) != 0)
|
| out_of_memory(cinfo, 5); /* safety check */
|
| - samplesperrow = (JDIMENSION)jround_up(samplesperrow, (2 * ALIGN_SIZE) / SIZEOF(JSAMPLE));
|
| + samplesperrow = (JDIMENSION)round_up_pow2(samplesperrow, (2 * ALIGN_SIZE) / SIZEOF(JSAMPLE));
|
|
|
| /* Calculate max # of rows allowed in one allocation chunk */
|
| ltemp = (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)) /
|
|
|