diff --git a/display_server/frameworks/surface/src/native_window.cpp b/display_server/frameworks/surface/src/native_window.cpp index f50228f136f752b88da79501a36f0c58eec51044..039be9aad4d89bfb0d0baef191ccf706e5a407ba 100644 --- a/display_server/frameworks/surface/src/native_window.cpp +++ b/display_server/frameworks/surface/src/native_window.cpp @@ -128,7 +128,12 @@ int32_t NativeWindowFlushBuffer(OHNativeWindow *window, OHNativeWindowBuffer *bu OHOS::sptr acquireFence = new OHOS::SyncFence(fenceFd); window->surface->FlushBuffer(buffer->sfbuffer, acquireFence, config); - + // fixbug: fd leak. + buffer->sfbuffer = nullptr; + // here we delete OHNativeWindowBuffer buffer, because we new it when requesting. + // otherwise, will leak mem of OHNativeWindowBuffer per frame. + // actually, if we delete buffer, fd will not leak fd at the sametime. + delete buffer; return OHOS::GSERROR_OK; }