[gegl] gegl_sampler_get: check arguments for nan/infinity



commit 2478b04b9ed1bf282d7e61d99a0560ae4d58f51a
Author: Øyvind Kolås <pippin gimp org>
Date:   Sun Feb 21 12:31:59 2016 +0100

    gegl_sampler_get: check arguments for nan/infinity

 gegl/buffer/gegl-buffer.h  |    3 +++
 gegl/buffer/gegl-sampler.c |    5 +++++
 2 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer.h b/gegl/buffer/gegl-buffer.h
index da4ad2a..65dce8d 100644
--- a/gegl/buffer/gegl-buffer.h
+++ b/gegl/buffer/gegl-buffer.h
@@ -478,6 +478,9 @@ typedef void (*GeglSamplerGetFun)  (GeglSampler     *self,
 
 /**
  * gegl_sampler_get_fun: (skip)
+ *
+ * Get the raw sampler function, the raw sampler function does not do
+ * additional NaN / inifinity checks on passed in coordinates.
  */
 GeglSamplerGetFun gegl_sampler_get_fun (GeglSampler *sampler);
 
diff --git a/gegl/buffer/gegl-sampler.c b/gegl/buffer/gegl-sampler.c
index cb91aba..1d79e2f 100644
--- a/gegl/buffer/gegl-sampler.c
+++ b/gegl/buffer/gegl-sampler.c
@@ -157,6 +157,11 @@ gegl_sampler_get (GeglSampler     *self,
                   void            *output,
                   GeglAbyssPolicy  repeat_mode)
 {
+  if (G_UNLIKELY(!isfinite (x)))
+    x = 0.0;
+  if (G_UNLIKELY(!isfinite (y)))
+    y = 0.0;
+
   if (self->lvel)
   {
     double factor = 1.0 / (1 << self->lvel);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]