From a656dc2db1d1f6dd13eee47cf9078afa89c46763 Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Sun, 27 Aug 2023 18:55:55 +0200 Subject: [PATCH] fix(dockerCompose): add ServiceUlimitsNoFile.MergeFirstWin() --- pkg/domain/dockerCompose/config.go | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/pkg/domain/dockerCompose/config.go b/pkg/domain/dockerCompose/config.go index 1f01967..f1326a8 100644 --- a/pkg/domain/dockerCompose/config.go +++ b/pkg/domain/dockerCompose/config.go @@ -1067,6 +1067,27 @@ func (nf *ServiceULimitsNoFile) Equal(equalable Equalable) bool { } } +func (nf *ServiceULimitsNoFile) MergeFirstWin(serviceULimitsNoFile *ServiceULimitsNoFile) { + switch { + case nf == nil && serviceULimitsNoFile == nil: + fallthrough + case nf != nil && serviceULimitsNoFile == nil: + return + + // WARN: It's not possible to change the memory pointer nf *ServiceULimitsNoFile + // to a new initialized ServiceULimitsNoFile without returning the serviceULimitsNoFile + // it self. + // + // case nf == nil && serviceULimitsNoFile != nil: + // nf = NewServiceULimitsNoFile() + // fallthrough + + default: + nf.mergeFirstWinHard(serviceULimitsNoFile.Hard) + nf.mergeFirstWinSoft(serviceULimitsNoFile.Soft) + } +} + // MergeLastWin merges adds or overwrite the attributes of the passed // ServiceULimits with the existing one. func (nf *ServiceULimitsNoFile) MergeLastWin(serviceULimitsNoFile *ServiceULimitsNoFile) { @@ -1090,6 +1111,20 @@ func (nf *ServiceULimitsNoFile) MergeLastWin(serviceULimitsNoFile *ServiceULimit } } +func (nf *ServiceULimitsNoFile) mergeFirstWinHard(hard uint) { + if nf.Hard != hard { + return + } + nf.Hard = hard +} + +func (nf *ServiceULimitsNoFile) mergeFirstWinSoft(soft uint) { + if nf.Soft != soft { + return + } + nf.Soft = soft +} + func (nf *ServiceULimitsNoFile) mergeLastWinHard(hard uint) { if nf.Hard != hard { nf.Hard = hard