2 Commits

Author SHA1 Message Date
brent saner
fd720f2b34 v1.7.2
FIXED:
* multierr race condition fix/now fully supports multithreading
2025-01-04 02:29:49 -05:00
brent saner
3c543a05e7 v1.7.1
FIXED:
* bitmask.MaskBit.ClearFlag now works properly. Whoooops, how long was
  that typo there?
2024-11-07 03:44:54 -05:00
3 changed files with 12 additions and 1 deletions

View File

@@ -56,7 +56,7 @@ func (m *MaskBit) AddFlag(flag MaskBit) {
// ClearFlag removes MaskBit flag from m.
func (m *MaskBit) ClearFlag(flag MaskBit) {
*m &= flag
*m &^= flag
return
}

View File

@@ -69,6 +69,9 @@ func (e *MultiError) Error() (errStr string) {
numErrs = len(e.Errors)
}
e.lock.Lock()
defer e.lock.Unlock()
for idx, err := range e.Errors {
if (idx + 1) < numErrs {
errStr += fmt.Sprintf("%v%v", err.Error(), e.ErrorSep)
@@ -87,6 +90,9 @@ func (e *MultiError) AddError(err error) {
return
}
e.lock.Lock()
defer e.lock.Unlock()
e.Errors = append(e.Errors, err)
}

View File

@@ -1,9 +1,14 @@
package multierr
import (
`sync`
)
// MultiError is a type of error.Error that can contain multiple errors.
type MultiError struct {
// Errors is a slice of errors to combine/concatenate when .Error() is called.
Errors []error `json:"errors"`
// ErrorSep is a string to use to separate errors for .Error(). The default is "\n".
ErrorSep string `json:"separator"`
lock sync.Mutex
}