diff --git a/go.mod b/go.mod index 217bbe1..e05ef73 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/snapetech/iptvtunerr go 1.25.0 require ( - github.com/andybalholm/brotli v1.2.1 + github.com/andybalholm/brotli v1.2.2 github.com/hanwen/go-fuse/v2 v2.10.1 github.com/prometheus/client_golang v1.23.2 golang.org/x/crypto v0.53.0 diff --git a/go.sum b/go.sum index 5926b41..f917c2f 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro= -github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM= +github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= diff --git a/vendor/github.com/andybalholm/brotli/decode.go b/vendor/github.com/andybalholm/brotli/decode.go index 9d9513b..1a27c0a 100644 --- a/vendor/github.com/andybalholm/brotli/decode.go +++ b/vendor/github.com/andybalholm/brotli/decode.go @@ -2175,12 +2175,9 @@ func decoderDecompressStream(s *Reader, available_in *uint, next_in *[]byte, ava case stateInitialize: s.max_backward_distance = (1 << s.window_bits) - windowGap - /* Allocate memory for both block_type_trees and block_len_trees. */ - s.block_type_trees = make([]huffmanCode, (3 * (huffmanMaxSize258 + huffmanMaxSize26))) - if s.block_type_trees == nil { - result = decoderErrorAllocBlockTypeTrees - break + /* Allocate memory for both block_type_trees and block_len_trees. */ + s.block_type_trees = make([]huffmanCode, (3 * (huffmanMaxSize258 + huffmanMaxSize26))) } s.block_len_trees = s.block_type_trees[3*huffmanMaxSize258:] @@ -2368,17 +2365,9 @@ func decoderDecompressStream(s *Reader, available_in *uint, next_in *[]byte, ava break } - if !decoderHuffmanTreeGroupInit(s, &s.literal_hgroup, numLiteralSymbols, numLiteralSymbols, s.num_literal_htrees) { - allocation_success = false - } - - if !decoderHuffmanTreeGroupInit(s, &s.insert_copy_hgroup, numCommandSymbols, numCommandSymbols, s.num_block_types[1]) { - allocation_success = false - } - - if !decoderHuffmanTreeGroupInit(s, &s.distance_hgroup, num_distance_codes, max_distance_symbol, s.num_dist_htrees) { - allocation_success = false - } + decoderHuffmanTreeGroupInit(&s.literal_hgroup, numLiteralSymbols, numLiteralSymbols, s.num_literal_htrees) + decoderHuffmanTreeGroupInit(&s.insert_copy_hgroup, numCommandSymbols, numCommandSymbols, s.num_block_types[1]) + decoderHuffmanTreeGroupInit(&s.distance_hgroup, num_distance_codes, max_distance_symbol, s.num_dist_htrees) if !allocation_success { return saveErrorCode(s, decoderErrorAllocTreeGroups) diff --git a/vendor/github.com/andybalholm/brotli/reader.go b/vendor/github.com/andybalholm/brotli/reader.go index 3e22789..d652f4a 100644 --- a/vendor/github.com/andybalholm/brotli/reader.go +++ b/vendor/github.com/andybalholm/brotli/reader.go @@ -33,8 +33,23 @@ func NewReader(src io.Reader) *Reader { func (r *Reader) Reset(src io.Reader) error { if r.error_code < 0 { // There was an unrecoverable error, leaving the Reader's state - // undefined. Clear out everything but the buffer. - *r = Reader{buf: r.buf} + // undefined. Clear out everything but the buffers. + *r = Reader{ + buf: r.buf, + block_type_trees: r.block_type_trees, + literal_hgroup: huffmanTreeGroup{ + htrees: r.literal_hgroup.htrees, + codes: r.literal_hgroup.codes, + }, + distance_hgroup: huffmanTreeGroup{ + htrees: r.distance_hgroup.htrees, + codes: r.distance_hgroup.codes, + }, + insert_copy_hgroup: huffmanTreeGroup{ + htrees: r.insert_copy_hgroup.htrees, + codes: r.insert_copy_hgroup.codes, + }, + } } decoderStateInit(r) diff --git a/vendor/github.com/andybalholm/brotli/state.go b/vendor/github.com/andybalholm/brotli/state.go index 38d753e..da26da4 100644 --- a/vendor/github.com/andybalholm/brotli/state.go +++ b/vendor/github.com/andybalholm/brotli/state.go @@ -198,7 +198,7 @@ func decoderStateInit(s *Reader) bool { s.rb_roundtrips = 0 s.partial_pos_out = 0 - s.block_type_trees = nil + clear(s.block_type_trees) s.block_len_trees = nil s.ringbuffer_size = 0 s.new_ringbuffer_size = 0 @@ -212,12 +212,8 @@ func decoderStateInit(s *Reader) bool { s.sub_loop_counter = 0 - s.literal_hgroup.codes = nil - s.literal_hgroup.htrees = nil - s.insert_copy_hgroup.codes = nil - s.insert_copy_hgroup.htrees = nil - s.distance_hgroup.codes = nil - s.distance_hgroup.htrees = nil + cleanupCodes(s) + cleanupHTrees(s) s.is_last_metablock = 0 s.is_uncompressed = 0 @@ -232,8 +228,6 @@ func decoderStateInit(s *Reader) bool { s.dist_rb[2] = 11 s.dist_rb[3] = 4 s.dist_rb_idx = 0 - s.block_type_trees = nil - s.block_len_trees = nil s.symbol_lists.storage = s.symbols_lists_array[:] s.symbol_lists.offset = huffmanMaxCodeLength + 1 @@ -266,29 +260,54 @@ func decoderStateMetablockBegin(s *Reader) { s.dist_context_map_slice = nil s.dist_htree_index = 0 s.context_lookup = nil - s.literal_hgroup.codes = nil - s.literal_hgroup.htrees = nil - s.insert_copy_hgroup.codes = nil - s.insert_copy_hgroup.htrees = nil - s.distance_hgroup.codes = nil - s.distance_hgroup.htrees = nil + + cleanupCodes(s) + cleanupHTrees(s) } func decoderStateCleanupAfterMetablock(s *Reader) { s.context_modes = nil s.context_map = nil s.dist_context_map = nil - s.literal_hgroup.htrees = nil - s.insert_copy_hgroup.htrees = nil - s.distance_hgroup.htrees = nil + cleanupHTrees(s) } -func decoderHuffmanTreeGroupInit(s *Reader, group *huffmanTreeGroup, alphabet_size uint32, max_symbol uint32, ntrees uint32) bool { +func decoderHuffmanTreeGroupInit(group *huffmanTreeGroup, alphabet_size uint32, max_symbol uint32, ntrees uint32) { var max_table_size uint = uint(kMaxHuffmanTableSize[(alphabet_size+31)>>5]) group.alphabet_size = uint16(alphabet_size) group.max_symbol = uint16(max_symbol) group.num_htrees = uint16(ntrees) - group.htrees = make([][]huffmanCode, ntrees) - group.codes = make([]huffmanCode, (uint(ntrees) * max_table_size)) - return !(group.codes == nil) + + makeCodesBuffer(group, uint(ntrees)*max_table_size) + makeTreesBuffer(group, ntrees) +} + +func makeTreesBuffer(group *huffmanTreeGroup, treesLen uint32) { + if cap(group.htrees) < int(treesLen) { + group.htrees = make([][]huffmanCode, treesLen) + return + } + + group.htrees = group.htrees[:treesLen] +} + +func makeCodesBuffer(group *huffmanTreeGroup, codesLen uint) { + if cap(group.codes) < int(codesLen) { + group.codes = make([]huffmanCode, codesLen) + return + } + + group.codes = group.codes[:codesLen] +} + +func cleanupCodes(s *Reader) { + clear(s.literal_hgroup.codes) + clear(s.insert_copy_hgroup.codes) + clear(s.distance_hgroup.codes) +} + +func cleanupHTrees(s *Reader) { + clear(s.literal_hgroup.htrees) + clear(s.insert_copy_hgroup.htrees) + clear(s.distance_hgroup.htrees) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 528d3d7..69cd53e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# github.com/andybalholm/brotli v1.2.1 +# github.com/andybalholm/brotli v1.2.2 ## explicit; go 1.22 github.com/andybalholm/brotli github.com/andybalholm/brotli/flate