diff options
Diffstat (limited to 'ext/gd/libgd/gd_interpolation.c')
-rw-r--r-- | ext/gd/libgd/gd_interpolation.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/gd/libgd/gd_interpolation.c b/ext/gd/libgd/gd_interpolation.c index 37e14a1c0b..e00135ae71 100644 --- a/ext/gd/libgd/gd_interpolation.c +++ b/ext/gd/libgd/gd_interpolation.c @@ -906,11 +906,12 @@ static inline LineContribType * _gdContributionsAlloc(unsigned int line_length, res->ContribRow[u].Weights = (double *) gdMalloc(windows_size * sizeof(double)); } if (overflow_error == 1 || res->ContribRow[u].Weights == NULL) { + unsigned int i; u--; - while (u >= 0) { - gdFree(res->ContribRow[u].Weights); - u--; + for (i=0;i<=u;i++) { + gdFree(res->ContribRow[i].Weights); } + gdFree(res); return NULL; } } |