avoid segfault with unknown interpolator

This commit is contained in:
Bernhard K. Weisshuhn
2015-04-19 23:10:29 +02:00
parent 6fc62d39c9
commit 8ac33aad69
3 changed files with 21 additions and 0 deletions

View File

@@ -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;

View File

@@ -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;