From: hjhun <36876573+hjhun@users.noreply.github.com> Date: Fri, 20 Sep 2024 02:03:54 +0000 (+0900) Subject: [Tizen.Core] Fix double free issues (#6335) X-Git-Tag: submit/tizen/20240920.150855~1^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7852911c0a6512969f40848956477b5bac70b8e;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Tizen.Core] Fix double free issues (#6335) * [Tizen.Core] Fix double free issues The received object in the callback function should not be released. Signed-off-by: Hwankyu Jhun * Prevent double free using an internal property Signed-off-by: Hwankyu Jhun --------- Signed-off-by: Hwankyu Jhun --- diff --git a/src/Tizen.Core/Tizen.Core/ChannelObject.cs b/src/Tizen.Core/Tizen.Core/ChannelObject.cs index 64a35b975..98730fa19 100644 --- a/src/Tizen.Core/Tizen.Core/ChannelObject.cs +++ b/src/Tizen.Core/Tizen.Core/ChannelObject.cs @@ -55,12 +55,14 @@ namespace Tizen.Core Id = id; Data = data; IsUsed = false; + IsDestroyable = true; } internal ChannelObject(IntPtr handle) { _handle = handle; IsUsed = false; + IsDestroyable = true; } /// @@ -128,6 +130,8 @@ namespace Tizen.Core } } + internal bool IsDestroyable { set; get; } + internal bool IsUsed { set; get; } internal IntPtr Handle { get { return _handle; } } @@ -152,7 +156,10 @@ namespace Tizen.Core _dataMap.TryRemove(id, out var data); } - Interop.LibTizenCore.TizenCoreChannel.ObjectDestroy(_handle); + if (IsDestroyable) + { + Interop.LibTizenCore.TizenCoreChannel.ObjectDestroy(_handle); + } _handle = IntPtr.Zero; } } diff --git a/src/Tizen.Core/Tizen.Core/Event.cs b/src/Tizen.Core/Tizen.Core/Event.cs index d9fc25b18..b0a473dd5 100644 --- a/src/Tizen.Core/Tizen.Core/Event.cs +++ b/src/Tizen.Core/Tizen.Core/Event.cs @@ -68,6 +68,7 @@ namespace Tizen.Core using (var eventObject = new EventObject(eventData)) { EventReceived?.Invoke(this, new EventReceivedEventArgs(eventObject)); + eventObject.Handle = IntPtr.Zero; } return true; } diff --git a/src/Tizen.Core/Tizen.Core/Task.cs b/src/Tizen.Core/Tizen.Core/Task.cs index 1e8b52299..0be1f06fd 100644 --- a/src/Tizen.Core/Tizen.Core/Task.cs +++ b/src/Tizen.Core/Tizen.Core/Task.cs @@ -567,6 +567,7 @@ namespace Tizen.Core { var eventArgs = new ChannelReceivedEventArgs(channelObject); receiver.InvokeEventHandler(null, eventArgs); + channelObject.IsDestroyable = false; } } }