diff --git a/ext/gd/libgd/gd_interpolation.c b/ext/gd/libgd/gd_interpolation.c index d723e652a83e6..741f45430cbb7 100644 --- a/ext/gd/libgd/gd_interpolation.c +++ b/ext/gd/libgd/gd_interpolation.c @@ -931,7 +931,7 @@ static inline void _gdScaleRow(gdImagePtr pSrc, unsigned int src_width, gdImage int *p_dst_row = dst->tpixels[row]; unsigned int x; - for (x = 0; x < dst_width - 1; x++) { + for (x = 0; x < dst_width; x++) { register unsigned char r = 0, g = 0, b = 0, a = 0; const int left = contrib->ContribRow[x].Left; const int right = contrib->ContribRow[x].Right; @@ -967,7 +967,7 @@ static inline int _gdScaleHoriz(gdImagePtr pSrc, unsigned int src_width, unsigne return 0; } /* Scale each row */ - for (u = 0; u < dst_height - 1; u++) { + for (u = 0; u < dst_height; u++) { _gdScaleRow(pSrc, src_width, pDst, dst_width, u, contrib); } _gdContributionsFree (contrib); @@ -977,7 +977,7 @@ static inline int _gdScaleHoriz(gdImagePtr pSrc, unsigned int src_width, unsigne static inline void _gdScaleCol (gdImagePtr pSrc, unsigned int src_width, gdImagePtr pRes, unsigned int dst_width, unsigned int dst_height, unsigned int uCol, LineContribType *contrib) { unsigned int y; - for (y = 0; y < dst_height - 1; y++) { + for (y = 0; y < dst_height; y++) { register unsigned char r = 0, g = 0, b = 0, a = 0; const int iLeft = contrib->ContribRow[y].Left; const int iRight = contrib->ContribRow[y].Right; @@ -1014,7 +1014,7 @@ static inline int _gdScaleVert (const gdImagePtr pSrc, const unsigned int src_wi return 0; } /* scale each column */ - for (u = 0; u < dst_width - 1; u++) { + for (u = 0; u < dst_width; u++) { _gdScaleCol(pSrc, src_width, pDst, dst_width, dst_height, u, contrib); } _gdContributionsFree(contrib); diff --git a/ext/gd/tests/bug79676.phpt b/ext/gd/tests/bug79676.phpt new file mode 100644 index 0000000000000..1187bfa1dfe63 --- /dev/null +++ b/ext/gd/tests/bug79676.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #79676 (imagescale adds black border with IMG_BICUBIC) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +No scaling - Test Result: pass +Scale 200%, default mode - Test Result: pass +Scale 50%, default mode - Test Result: pass +Scale 200%, IMG_BICUBIC mode - Test Result: pass +Scale 50%, IMG_BICUBIC mode - Test Result: pass