From 0b15c14c103649dd86e9dca3eea411237cbf84d1 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Fri, 29 Sep 2023 19:03:43 +0200 Subject: [PATCH] fix: prevent disk duplication in the list because of a data race. It causes the popup view or widget to stop updating the value (#1624) --- Modules/Disk/main.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/Disk/main.swift b/Modules/Disk/main.swift index 5aac263c..e8a94d40 100644 --- a/Modules/Disk/main.swift +++ b/Modules/Disk/main.swift @@ -47,7 +47,7 @@ public struct drive: Codable { } public class Disks: Codable { - private var queue: DispatchQueue = DispatchQueue(label: "eu.exelban.Stats.Disk.SynchronizedArray", attributes: .concurrent) + private var queue: DispatchQueue = DispatchQueue(label: "eu.exelban.Stats.Disk.SynchronizedArray") private var array: [drive] = [] enum CodingKeys: String, CodingKey { @@ -108,7 +108,9 @@ public class Disks: Codable { public func append( _ element: drive) { self.queue.async(flags: .barrier) { - self.array.append(element) + if !self.array.contains(where: {$0.BSDName == element.BSDName}) { + self.array.append(element) + } } }