[Tizen] Fix coverity issue at capture 83/264483/1 accepted/tizen/6.0/unified/20210924.132538 submit/tizen_6.0/20210923.045321
authorEunki, Hong <eunkiki.hong@samsung.com>
Thu, 23 Sep 2021 04:42:18 +0000 (13:42 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Thu, 23 Sep 2021 04:43:14 +0000 (13:43 +0900)
Change-Id: Ic2eea250b91eb729f57490a1948c06b6b56256ca
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali/internal/system/common/capture-impl.cpp

index 9dd3199..df7e4b3 100644 (file)
@@ -53,6 +53,7 @@ Capture::Capture()
   mTimer(),
   mPath(),
   mNativeImageSourcePtr( NULL ),
+  mPixelBuffer(),
   mFileSave( false ),
   mIsNativeImageSourcePossible(true)
 {
@@ -64,6 +65,7 @@ Capture::Capture( Dali::CameraActor cameraActor )
   mTimer(),
   mPath(),
   mNativeImageSourcePtr( NULL ),
+  mPixelBuffer(),
   mFileSave( false ),
   mIsNativeImageSourcePossible(true)
 {
@@ -133,17 +135,20 @@ Dali::Devel::PixelBuffer Capture::GetCapturedBuffer()
 {
   if(!mPixelBuffer || !mPixelBuffer.GetBuffer())
   {
-    uint8_t* bufferPointer;
+    uint8_t*             bufferPointer = nullptr;
     uint32_t             width, height;
     Dali::Pixel::Format  pixelFormat;
+    std::vector<uint8_t> buffer;
     if(mIsNativeImageSourcePossible)
     {
-      std::vector<uint8_t> buffer;
-      if(!mNativeImageSourcePtr->GetPixels(buffer, width, height, pixelFormat))
+      if(mNativeImageSourcePtr->GetPixels(buffer, width, height, pixelFormat))
       {
-        return Dali::Devel::PixelBuffer();
+        if(width > 0 && height > 0)
+        {
+          // Get captured imge only if it have more than 1 pixels.
+          bufferPointer = &buffer[0];
+        }
       }
-      bufferPointer = &buffer[0];
     }
     else
     {
@@ -152,6 +157,11 @@ Dali::Devel::PixelBuffer Capture::GetCapturedBuffer()
       pixelFormat = Dali::Pixel::RGBA8888;
       bufferPointer = mFrameBuffer.GetRenderedBuffer();
     }
+    if(bufferPointer == nullptr)
+    {
+      // Fail to capture. Return empty pixel buffer.
+      return Dali::Devel::PixelBuffer();
+    }
     mPixelBuffer = Dali::Devel::PixelBuffer::New(width, height, pixelFormat);
 
     memcpy(mPixelBuffer.GetBuffer(), bufferPointer, width * height * Dali::Pixel::GetBytesPerPixel(pixelFormat));