mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-19 21:56:22 +00:00
Align atomic struct field for compatibility in 32-bit ABIs. (#7037)
The layout of struct fields means that interior fields may not be properly aligned for 64-bit access. Fixes #7000.
This commit is contained in:
@@ -751,13 +751,18 @@ func (chDesc ChannelDescriptor) FillDefaults() (filled ChannelDescriptor) {
|
||||
// TODO: lowercase.
|
||||
// NOTE: not goroutine-safe.
|
||||
type Channel struct {
|
||||
// Exponential moving average.
|
||||
// This field must be accessed atomically.
|
||||
// It is first in the struct to ensure correct alignment.
|
||||
// See https://github.com/tendermint/tendermint/issues/7000.
|
||||
recentlySent int64
|
||||
|
||||
conn *MConnection
|
||||
desc ChannelDescriptor
|
||||
sendQueue chan []byte
|
||||
sendQueueSize int32 // atomic.
|
||||
recving []byte
|
||||
sending []byte
|
||||
recentlySent int64 // exponential moving average
|
||||
|
||||
maxPacketMsgPayloadSize int
|
||||
|
||||
|
||||
Reference in New Issue
Block a user