cloneMessage returns a deep copy of a session Message. It copies the inner chat.Message's slice and pointer fields so that the returned value shares no mutable state with the original.
(m *Message)
| 426 | // It copies the inner chat.Message's slice and pointer fields so that the |
| 427 | // returned value shares no mutable state with the original. |
| 428 | func cloneMessage(m *Message) *Message { |
| 429 | cp := *m |
| 430 | cp.Message = cloneChatMessage(m.Message) |
| 431 | return &cp |
| 432 | } |
| 433 | |
| 434 | // snapshotItems returns a copy of s.Messages safe to use without holding |
| 435 | // s.mu. Each Message value is deep-copied so concurrent UpdateMessage calls |
no test coverage detected