--- pngvcrd.c.105 Thu Oct 14 05:43:08 1999 +++ pngvcrd.c Tue Oct 19 08:09:02 1999 @@ -1182,7 +1182,7 @@ { if (pixel_bytes == 3) { - if ((pass == 0) || (pass == 1)) + if (((pass == 0) || (pass == 1)) && width) { _asm { @@ -1217,7 +1217,7 @@ EMMS } } - else if ((pass == 2) || (pass == 3)) + else if (((pass == 2) || (pass == 3)) && width) { _asm { @@ -1288,20 +1290,20 @@ png_byte v[8]; int j; - png_memcpy(v, sptr, pixel_bytes); + png_memcpy(v, sptr, 3); for (j = 0; j < png_pass_inc[pass]; j++) { - png_memcpy(dp, v, pixel_bytes); - dp -= pixel_bytes; + png_memcpy(dp, v, 3); + dp -= 3; } - sptr -= pixel_bytes; + sptr -= 3; } } } /* end of pixel_bytes == 3 */ else if (pixel_bytes == 1) { - if ((pass == 0) || (pass == 1)) + if (((pass == 0) || (pass == 1)) && width) { int width_mmx = ((width >> 2) << 2); width -= width_mmx; @@ -1368,7 +1370,7 @@ sptr--; } } - else if ((pass == 2) || (pass == 3)) + else if (((pass == 2) || (pass == 3)) && width) { int width_mmx = ((width >> 2) << 2); width -= width_mmx; @@ -1410,7 +1412,7 @@ sptr --; } } - else //if ((pass == 4) || (pass == 5)) + else if (width) /* && ((pass == 4) || (pass == 5))) */ { int width_mmx = ((width >> 3) << 3); width -= width_mmx; @@ -1457,7 +1459,7 @@ else if (pixel_bytes == 2) { - if ((pass == 0) || (pass == 1)) + if (((pass == 0) || (pass == 1)) && width) { int width_mmx = ((width >> 1) << 1); width -= width_mmx; @@ -1494,17 +1496,16 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 2; + png_memcpy(v, sptr, 2); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 2; + png_memcpy(dp, v, 2); } } } - - else if ((pass == 2) || (pass == 3)) + else if (((pass == 2) || (pass == 3)) && width) { int width_mmx = ((width >> 1) << 1) ; width -= width_mmx; @@ -1540,17 +1541,16 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 2; + png_memcpy(v, sptr, 2); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 2; + png_memcpy(dp, v, 2); } } } - - else // pass == 4 or 5 + else if (width) // pass == 4 or 5 { int width_mmx = ((width >> 1) << 1) ; width -= width_mmx; @@ -1581,12 +1581,12 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 2; + png_memcpy(v, sptr, 2); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 2; + png_memcpy(dp, v, 2); } } } @@ -1594,7 +1594,7 @@ else if (pixel_bytes == 4) { - if ((pass == 0) || (pass == 1)) + if (((pass == 0) || (pass == 1)) && width) { int width_mmx = ((width >> 1) << 1) ; width -= width_mmx; @@ -1634,17 +1634,16 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 4; + png_memcpy(v, sptr, 4); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 4; + png_memcpy(dp, v, 4); } } } - - else if ((pass == 2) || (pass == 3)) + else if (((pass == 2) || (pass == 3)) && width) { int width_mmx = ((width >> 1) << 1) ; width -= width_mmx; @@ -1680,17 +1679,16 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 4; + png_memcpy(v, sptr, 4); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 4; + png_memcpy(dp, v, 4); } } } - - else // pass == 4 or 5 + else if (width) // pass == 4 or 5 { int width_mmx = ((width >> 1) << 1) ; width -= width_mmx; @@ -1724,12 +1722,12 @@ { png_byte v[8]; int j; - sptr -= pixel_bytes; - png_memcpy(v, sptr, pixel_bytes); + sptr -= 4; + png_memcpy(v, sptr, 4); for (j = 0; j < png_pass_inc[pass]; j++) { - dp -= pixel_bytes; - png_memcpy(dp, v, pixel_bytes); + dp -= 4; + png_memcpy(dp, v, 4); } } } @@ -1742,13 +1740,13 @@ { png_byte v[8]; int j; - png_memcpy(v, sptr, pixel_bytes); + png_memcpy(v, sptr, 6); for (j = 0; j < png_pass_inc[pass]; j++) { - png_memcpy(dp, v, pixel_bytes); - dp -= pixel_bytes; + png_memcpy(dp, v, 6); + dp -= 6; } - sptr -= pixel_bytes; + sptr -= 6; } } /* end of pixel_bytes == 6 */