From 1d3ce2c02951c329903939501d75bddb771f6b92 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 31 Oct 2023 11:03:35 +0800 Subject: [PATCH] fix, flutter, peer info event may be changed accidentally Signed-off-by: fufesou --- flutter/lib/models/model.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index b1a270718..0bc22790a 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -628,7 +628,9 @@ class FfiModel with ChangeNotifier { /// Handle the peer info event based on [evt]. handlePeerInfo(Map evt, String peerId, bool isCache) async { - cachedPeerData.peerInfo = evt; + // Map clone is required here, otherwise "evt" may be changed by other threads through the reference. + // Because this function is asynchronous, there's an "await" in this function. + cachedPeerData.peerInfo = {...evt}; // recent peer updated by handle_peer_info(ui_session_interface.rs) --> handle_peer_info(client.rs) --> save_config(client.rs) bind.mainLoadRecentPeers();