From 7f385a33f356b96a2b98e8382080c64524ac8785 Mon Sep 17 00:00:00 2001 From: Peter Rekdal Sunde Date: Thu, 9 Jul 2015 18:58:21 +0200 Subject: [PATCH] Bugfix: Pin memory while copying bitmap raw pointer. --- src/bindings/csharp/openalpr-net/openalpr-net.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bindings/csharp/openalpr-net/openalpr-net.cpp b/src/bindings/csharp/openalpr-net/openalpr-net.cpp index bd0ed82..9884668 100644 --- a/src/bindings/csharp/openalpr-net/openalpr-net.cpp +++ b/src/bindings/csharp/openalpr-net/openalpr-net.cpp @@ -93,7 +93,10 @@ namespace openalprnet { bitmap->PixelFormat ); - cv::Mat dstMat(cv::Size(bitmap->Width, bitmap->Height), CV_8UC(channels), reinterpret_cast(bitmapData->Scan0.ToPointer())); + char *src = reinterpret_cast(bitmapData->Scan0.ToPointer()); + pin_ptr pin(&src[0]); + + cv::Mat dstMat(cv::Size(bitmap->Width, bitmap->Height), CV_8UC(channels), pin); bitmap->UnlockBits(bitmapData); @@ -147,7 +150,10 @@ namespace openalprnet { bitmap->PixelFormat ); - ::memcpy(bitmapData->Scan0.ToPointer(), data, totalSize); + char *src = reinterpret_cast(bitmapData->Scan0.ToPointer()); + pin_ptr pin(&src[0]); + + ::memcpy(pin, data, totalSize); bitmap->UnlockBits(bitmapData);