Merge pull request #4176 from alalek:issue_4461
authorVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Tue, 25 Aug 2015 07:46:28 +0000 (07:46 +0000)
committerVadim Pisarevsky <vadim.pisarevsky@gmail.com>
Tue, 25 Aug 2015 07:46:28 +0000 (07:46 +0000)
1  2 
modules/core/src/umatrix.cpp

@@@ -229,8 -228,22 +229,21 @@@ UMat Mat::getUMat(int accessFlags, UMat
          if(!a)
              a = a0;
          temp_u = a->allocate(dims, size.p, type(), data, step.p, accessFlags, usageFlags);
 -        temp_u->refcount = 1;
      }
-     UMat::getStdAllocator()->allocate(temp_u, accessFlags, usageFlags); // TODO result is not checked
+     bool allocated = false;
+     try
+     {
+         allocated = UMat::getStdAllocator()->allocate(temp_u, accessFlags, usageFlags);
+     }
+     catch (const cv::Exception& e)
+     {
+         fprintf(stderr, "Exception: %s\n", e.what());
+     }
+     if (!allocated)
+     {
+         allocated = getStdAllocator()->allocate(temp_u, accessFlags, usageFlags);
+         CV_Assert(allocated);
+     }
      hdr.flags = flags;
      setSize(hdr, dims, size.p, step.p);
      finalizeHdr(hdr);