diff --git a/frameworks/innerkitsimpl/common/src/pixel_map.cpp b/frameworks/innerkitsimpl/common/src/pixel_map.cpp index 2c8cfc96efa88f0d2a2cd3bfec6b1094a768bffd..b23cc78fc027648a17940b32737bc4d206794051 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/frameworks/kits/js/common/pixel_map_napi.cpp b/frameworks/kits/js/common/pixel_map_napi.cpp index 2250c7c56bb25b738c2205402e1fec5b2623475e..d9cabbaf86e697bf46e83e3a9a39d9f5d062b9ec 100644 --- a/frameworks/kits/js/common/pixel_map_napi.cpp +++ b/frameworks/kits/js/common/pixel_map_napi.cpp @@ -821,6 +821,7 @@ napi_value PixelMapNapi::GetBytesNumberPerRow(napi_env env, napi_callback_info i } else { HiLog::Error(LABEL, "native pixelmap is nullptr!"); } + pixelMapNapi.release(); return result; } @@ -851,6 +852,7 @@ napi_value PixelMapNapi::GetPixelBytesNumber(napi_env env, napi_callback_info in } else { HiLog::Error(LABEL, "native pixelmap is nullptr!"); } + pixelMapNapi.release(); return result; } diff --git a/interfaces/kits/js/@ohos.multimedia.image.d.ts b/interfaces/kits/js/@ohos.multimedia.image.d.ts index 5172224d05734bd2f361fc756a3ce945c93f3f48..cae023286e2fd1db056f21e90ca60c2f4eef242d 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 { /**