diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp
index 1953a47347dc3fd30264c8e1bd982820d0bab014..cf1061ca2a69832137e9d76388cff84dca316296 100644
--- a/modules/imgproc/src/imgwarp.cpp
+++ b/modules/imgproc/src/imgwarp.cpp
@@ -1920,6 +1920,12 @@ public:
                   0;
           }
 
+          if( func == 0 )
+          {
+              *ok = false;
+              return;
+          }
+
           switch (src.depth())
           {
           case CV_8U:
@@ -2061,7 +2067,7 @@ public:
 
           AutoBuffer<uchar> buf(bufsize + 64);
           uchar* bufptr = alignPtr((uchar*)buf, 32);
-          if( func( pSrc, (int)src.step[0], pDst, (int)dst.step[0], dstOffset, dstSize, ippBorderRepl, 0, pSpec, bufptr ) <= 0 )
+          if( func( pSrc, (int)src.step[0], pDst, (int)dst.step[0], dstOffset, dstSize, ippBorderRepl, 0, pSpec, bufptr ) < 0 )
               *ok = false;
       }
 private: