Fix canny segment fault (Bug #3978)

Avoid stack overflow based on std::vector cause
std::vector::resize() segmentation fault.
pull/3407/head
Yan Wang 10 years ago
parent 4f2aeeffaa
commit 184b6e314c
  1. 2
      modules/imgproc/src/canny.cpp

@ -453,7 +453,7 @@ void cv::Canny( InputArray _src, OutputArray _dst,
if ((stack_top - stack_bottom) + src.cols > maxsize) if ((stack_top - stack_bottom) + src.cols > maxsize)
{ {
int sz = (int)(stack_top - stack_bottom); int sz = (int)(stack_top - stack_bottom);
maxsize = maxsize * 3/2; maxsize = std::max(maxsize * 3/2, sz + src.cols);
stack.resize(maxsize); stack.resize(maxsize);
stack_bottom = &stack[0]; stack_bottom = &stack[0];
stack_top = stack_bottom + sz; stack_top = stack_bottom + sz;

Loading…
Cancel
Save