From 6263cf94eb87f13f4056c830e806ad9083ce4fc9 Mon Sep 17 00:00:00 2001 From: Alex P Date: Wed, 27 Aug 2025 23:54:40 +0000 Subject: [PATCH] refactor(audio/validation): improve frame data validation with specific error messages Split generic frame data validation error into specific cases for empty and oversized frames to provide better error context. The optimized validation maintains performance while improving debuggability. --- internal/audio/validation.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/audio/validation.go b/internal/audio/validation.go index b20df308..5761bf13 100644 --- a/internal/audio/validation.go +++ b/internal/audio/validation.go @@ -14,6 +14,8 @@ var ( ErrInvalidAudioQuality = errors.New("invalid audio quality level") ErrInvalidFrameSize = errors.New("invalid frame size") ErrInvalidFrameData = errors.New("invalid frame data") + ErrFrameDataEmpty = errors.New("invalid frame data: frame data is empty") + ErrFrameDataTooLarge = errors.New("invalid frame data: exceeds maximum") ErrInvalidBufferSize = errors.New("invalid buffer size") ErrInvalidPriority = errors.New("invalid priority value") ErrInvalidLatency = errors.New("invalid latency value") @@ -325,11 +327,13 @@ func InitValidationCache() { // //go:inline func ValidateAudioFrame(data []byte) error { - // Single optimized check: empty data OR exceeds cached maximum - // This branch prediction friendly pattern minimizes CPU pipeline stalls + // Optimized validation with pre-allocated error messages for minimal overhead dataLen := len(data) - if dataLen == 0 || dataLen > cachedMaxFrameSize { - return ErrInvalidFrameData + if dataLen == 0 { + return ErrFrameDataEmpty + } + if dataLen > cachedMaxFrameSize { + return ErrFrameDataTooLarge } return nil }