From 4042104e2bd681475eed8821bae2e1f40eb850ab Mon Sep 17 00:00:00 2001 From: zhang-xiaobo1997 Date: Fri, 4 Mar 2022 17:24:54 +0800 Subject: [PATCH] Modify for memlease Signed-off-by: zhang-xiaobo1997 --- frameworks/innerkitsimpl/common/src/pixel_map.cpp | 6 ++++++ interfaces/kits/js/@ohos.multimedia.image.d.ts | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/frameworks/innerkitsimpl/common/src/pixel_map.cpp b/frameworks/innerkitsimpl/common/src/pixel_map.cpp index 2c8cfc96e..b23cc78fc 100644 --- a/frameworks/innerkitsimpl/common/src/pixel_map.cpp +++ b/frameworks/innerkitsimpl/common/src/pixel_map.cpp @@ -1082,27 +1082,33 @@ bool PixelMap::WriteImageData(Parcel &parcel, size_t size) const int result = AshmemSetProt(fd, PROT_READ | PROT_WRITE); HiLog::Info(LABEL, "AshmemSetProt:[%{public}d].", result); if (result < 0) { + ::close(fd); return false; } void *ptr = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (ptr == MAP_FAILED) { + ::close(fd); return false; } HiLog::Info(LABEL, "mmap success"); if (memcpy_s(ptr, size, data, size) != EOK) { ::munmap(ptr, size); + ::close(fd); HiLog::Error(LABEL, "WriteImageData memcpy_s error"); return false; } if (!WriteFileDescriptor(parcel, fd)) { ::munmap(ptr, size); + ::close(fd); HiLog::Error(LABEL, "WriteImageData WriteFileDescriptor error"); return false; } HiLog::Debug(LABEL, "WriteImageData WriteFileDescriptor success"); + ::munmap(ptr, size); + ::close(fd); HiLog::Debug(LABEL, "WriteImageData End"); #endif return true; diff --git a/interfaces/kits/js/@ohos.multimedia.image.d.ts b/interfaces/kits/js/@ohos.multimedia.image.d.ts index 5172224d0..cae023286 100644 --- a/interfaces/kits/js/@ohos.multimedia.image.d.ts +++ b/interfaces/kits/js/@ohos.multimedia.image.d.ts @@ -218,6 +218,7 @@ declare namespace image { * The componet type of image. * @since 8 * @syscap SystemCapability.Multimedia.Image.ImageReceiver + * @systemapi */ enum ComponentType { /** @@ -430,6 +431,7 @@ declare namespace image { * Describes image color components. * @since 8 * @syscap SystemCapability.Multimedia.Image.Core + * @systemapi */ interface Component { /** @@ -553,6 +555,7 @@ declare namespace image { * {@link ImageFormat} constants. Note that not all formats are supported, like ImageFormat.NV21. * @param capacity The maximum number of images the user will want to access simultaneously. * @return Returns the ImageReceiver instance if the operation is successful; returns null otherwise. + * @systemapi */ function createImageReceiver(width: number, height: number, format: number, capacity: number): ImageReceiver; @@ -887,6 +890,7 @@ declare namespace image { * Provides basic image operations, including obtaining image information, and reading and writing image data. * @since 8 * @syscap SystemCapability.Multimedia.Image.Core + * @systemapi */ interface Image { /** @@ -949,6 +953,7 @@ declare namespace image { * Image receiver object. * @since 8 * @syscap SystemCapability.Multimedia.Image.ImageReceiver + * @systemapi */ interface ImageReceiver { /** -- Gitee