mirror of
https://github.com/lovell/sharp.git
synced 2025-12-19 07:15:08 +01:00
avoid segfault with unknown interpolator
This commit is contained in:
@@ -134,6 +134,9 @@ namespace sharp {
|
||||
*/
|
||||
int InterpolatorWindowSize(char const *name) {
|
||||
VipsInterpolate *interpolator = vips_interpolate_new(name);
|
||||
if (interpolator == NULL) {
|
||||
return -1;
|
||||
}
|
||||
int window_size = vips_interpolate_get_window_size(interpolator);
|
||||
g_object_unref(interpolator);
|
||||
return window_size;
|
||||
|
||||
@@ -261,6 +261,9 @@ class ResizeWorker : public NanAsyncWorker {
|
||||
|
||||
// Get window size of interpolator, used for determining shrink vs affine
|
||||
int interpolatorWindowSize = InterpolatorWindowSize(baton->interpolator.c_str());
|
||||
if (InterpolatorWindowSize < 0) {
|
||||
return Error();
|
||||
}
|
||||
|
||||
// Scaling calculations
|
||||
double xfactor = 1.0;
|
||||
@@ -510,6 +513,9 @@ class ResizeWorker : public NanAsyncWorker {
|
||||
}
|
||||
// Create interpolator - "bilinear" (default), "bicubic" or "nohalo"
|
||||
VipsInterpolate *interpolator = vips_interpolate_new(baton->interpolator.c_str());
|
||||
if (interpolator == NULL) {
|
||||
return Error();
|
||||
}
|
||||
vips_object_local(hook, interpolator);
|
||||
// Perform affine transformation
|
||||
VipsImage *affined;
|
||||
|
||||
Reference in New Issue
Block a user