Skip to content

Commit cc5653d

Browse files
committed
Replace 0 byte allocation pattern flagged as a warning by g++ 15.11 and -Wall -Wextra
1 parent 889a493 commit cc5653d

23 files changed

Lines changed: 179 additions & 91 deletions

src/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ else
1818
ifeq ($(ARCH), x86_64)
1919
CXXFLAGS=-c -std=c++14 -Wall -Wextra -O3 -fomit-frame-pointer -fPIC -DNDEBUG -pedantic -march=native -fno-rtti $(CONCURRENCY_FLAG)
2020
else
21-
CXXFLAGS=-c -std=c++14 -Wall -Wextra -O3 -fPIC -DNDEBUG -pedantic -fno-rtti $(CONCURRENCY_FLAG)
21+
CXXFLAGS=-c -std=c++17 -Wall -Wextra -O3 -fPIC -DNDEBUG -pedantic -fno-rtti $(CONCURRENCY_FLAG)
2222
endif
2323
endif
2424

src/Makefile.tcmalloc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ libdecomp: $(STATIC_DECOMP_LIB) $(SHARED_DECOMP_LIB)
122122

123123
lib: $(STATIC_LIB) $(SHARED_LIB)
124124

125-
LIB_TCMALLOC=/usr/local/lib/libtcmalloc_minimal.a
125+
LIB_TCMALLOC=/usr/local/lib/libtcmalloc.a
126126

127127
# Create static libraries
128128
$(STATIC_LIB):$(LIB_OBJECTS)

src/entropy/ANSRangeDecoder.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,25 @@ ANSRangeDecoder::ANSRangeDecoder(InputBitStream& bitstream, int order, int chunk
5454
const int dim = 255 * order + 1;
5555
_freqs = new uint[dim * 256];
5656
_symbols = new ANSDecSymbol[dim * 256];
57-
_buffer = new byte[0];
57+
_buffer = nullptr;
5858
_bufferSize = 0;
59-
_f2s = new uint8[0];
59+
_f2s = nullptr;
6060
_f2sSize = 0;
6161
_logRange = DEFAULT_LOG_RANGE;
6262
}
6363

6464
ANSRangeDecoder::~ANSRangeDecoder()
6565
{
6666
_dispose();
67-
delete[] _buffer;
68-
delete[] _symbols;
69-
delete[] _f2s;
67+
68+
if (_buffer != nullptr)
69+
delete[] _buffer;
70+
71+
if (_f2s != nullptr)
72+
delete[] _f2s;
73+
7074
delete[] _freqs;
75+
delete[] _symbols;
7176
}
7277

7378
int ANSRangeDecoder::decodeHeader(uint frequencies[], uint alphabet[])
@@ -84,7 +89,9 @@ int ANSRangeDecoder::decodeHeader(uint frequencies[], uint alphabet[])
8489
const int dim = 255 * _order + 1;
8590

8691
if (_f2sSize < (dim << _logRange)) {
87-
delete[] _f2s;
92+
if (_f2s != nullptr)
93+
delete[] _f2s;
94+
8895
_f2sSize = dim << _logRange;
8996
_f2s = new uint8[_f2sSize];
9097
}
@@ -178,7 +185,9 @@ int ANSRangeDecoder::decode(byte block[], uint blkptr, uint count)
178185
const uint minBufSize = 2 * uint(_chunkSize);
179186

180187
if (_bufferSize < minBufSize) {
181-
delete[] _buffer;
188+
if (_buffer != nullptr)
189+
delete[] _buffer;
190+
182191
_bufferSize = minBufSize;
183192
_buffer = new byte[_bufferSize];
184193
}

src/entropy/ANSRangeEncoder.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,18 @@ ANSRangeEncoder::ANSRangeEncoder(OutputBitStream& bitstream, int order, int chun
6161
const int dim = 255 * order + 1;
6262
_symbols = new ANSEncSymbol[dim * 256];
6363
_freqs = new uint[dim * 257]; // freqs[x][256] = total(freqs[x][0..255])
64-
_buffer = new byte[0];
64+
_buffer = nullptr;
6565
_bufferSize = 0;
6666
_logRange = (order == 0) ? logRange : max(logRange - 1, 8);
6767
}
6868

6969
ANSRangeEncoder::~ANSRangeEncoder()
7070
{
7171
_dispose();
72-
delete[] _buffer;
72+
73+
if (_buffer != nullptr)
74+
delete[] _buffer;
75+
7376
delete[] _symbols;
7477
delete[] _freqs;
7578
}
@@ -167,7 +170,9 @@ int ANSRangeEncoder::encode(const byte block[], uint blkptr, uint count)
167170
const uint size = max(min(sz + (sz >> 3), 2 * count), uint(65536));
168171

169172
if (_bufferSize < size) {
170-
delete[] _buffer;
173+
if (_buffer != nullptr)
174+
delete[] _buffer;
175+
171176
_bufferSize = size;
172177
_buffer = new byte[_bufferSize];
173178
}

src/entropy/BinaryEntropyDecoder.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ BinaryEntropyDecoder::BinaryEntropyDecoder(InputBitStream& bitstream, Predictor*
3333
: _predictor(predictor)
3434
, _bitstream(bitstream)
3535
, _deallocate(deallocate)
36-
, _sba(new byte[0], 0)
36+
, _sba(nullptr, 0)
3737
{
3838
if (predictor == nullptr)
3939
throw invalid_argument("Invalid null predictor parameter");
@@ -46,7 +46,9 @@ BinaryEntropyDecoder::BinaryEntropyDecoder(InputBitStream& bitstream, Predictor*
4646
BinaryEntropyDecoder::~BinaryEntropyDecoder()
4747
{
4848
_dispose();
49-
delete[] _sba._array;
49+
50+
if (_sba._array != nullptr)
51+
delete[] _sba._array;
5052

5153
if (_deallocate)
5254
delete _predictor;
@@ -70,7 +72,9 @@ int BinaryEntropyDecoder::decode(byte block[], uint blkptr, uint count)
7072
const uint bufSize = length + (length >> 3);
7173

7274
if (_sba._length < int(bufSize)) {
73-
delete[] _sba._array;
75+
if (_sba._array != nullptr)
76+
delete[] _sba._array;
77+
7478
_sba._length = int(bufSize);
7579
_sba._array = new byte[_sba._length];
7680
}

src/entropy/BinaryEntropyEncoder.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ BinaryEntropyEncoder::BinaryEntropyEncoder(OutputBitStream& bitstream, Predictor
3333
: _predictor(predictor)
3434
, _bitstream(bitstream)
3535
, _deallocate(deallocate)
36-
, _sba(new byte[0], 0)
36+
, _sba(nullptr, 0)
3737
{
3838
if (predictor == nullptr)
3939
throw invalid_argument("Invalid null predictor parameter");
@@ -46,7 +46,9 @@ BinaryEntropyEncoder::BinaryEntropyEncoder(OutputBitStream& bitstream, Predictor
4646
BinaryEntropyEncoder::~BinaryEntropyEncoder()
4747
{
4848
_dispose();
49-
delete[] _sba._array;
49+
50+
if (_sba._array != nullptr)
51+
delete[] _sba._array;
5052

5153
if (_deallocate)
5254
delete _predictor;
@@ -70,7 +72,9 @@ int BinaryEntropyEncoder::encode(const byte block[], uint blkptr, uint count)
7072
const uint bufSize = length + (length >> 3);
7173

7274
if (_sba._length < int(bufSize)) {
73-
delete[] _sba._array;
75+
if (_sba._array != nullptr)
76+
delete[] _sba._array;
77+
7478
_sba._length = int(bufSize);
7579
_sba._array = new byte[_sba._length];
7680
}

src/entropy/HuffmanDecoder.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ HuffmanDecoder::HuffmanDecoder(InputBitStream& bitstream, Context* pCtx, int chu
4242
}
4343

4444
_chunkSize = chunkSize;
45-
_buffer = new byte[0];
45+
_buffer = nullptr;
4646
_bufferSize = 0;
4747
_pCtx = pCtx;
4848
reset();
@@ -157,7 +157,9 @@ int HuffmanDecoder::decodeV6(byte block[], uint blkptr, uint count)
157157
const uint minBufSize = 2 * uint(_chunkSize);
158158

159159
if (_bufferSize < minBufSize) {
160-
delete[] _buffer;
160+
if (_buffer != nullptr)
161+
delete[] _buffer;
162+
161163
_bufferSize = minBufSize;
162164
_buffer = new byte[_bufferSize];
163165
}
@@ -359,7 +361,9 @@ int HuffmanDecoder::decodeV5(byte block[], uint blkptr, uint count)
359361
const uint minLenBuf = uint(max(sz + (sz >> 3), 1024));
360362

361363
if (_bufferSize < minLenBuf) {
362-
delete[] _buffer;
364+
if (_buffer != nullptr)
365+
delete[] _buffer;
366+
363367
_bufferSize = minLenBuf;
364368
_buffer = new byte[_bufferSize];
365369
}

src/entropy/HuffmanDecoder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace kanzi
3131
public:
3232
HuffmanDecoder(InputBitStream& bitstream, Context* pCtx = nullptr, int chunkSize = HuffmanCommon::MAX_CHUNK_SIZE) ;
3333

34-
~HuffmanDecoder() { _dispose(); delete[] _buffer; }
34+
~HuffmanDecoder() { _dispose(); if (_buffer != nullptr) delete[] _buffer; }
3535

3636
int decode(byte block[], uint blkptr, uint len);
3737

src/entropy/HuffmanEncoder.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ HuffmanEncoder::HuffmanEncoder(OutputBitStream& bitstream, int chunkSize) : _bit
4141
}
4242

4343
_chunkSize = chunkSize;
44-
_buffer = new byte[0];
44+
_buffer = nullptr;
4545
_bufferSize = 0;
4646
reset();
4747
}
@@ -306,7 +306,9 @@ int HuffmanEncoder::encode(const byte block[], uint blkptr, uint count)
306306
const uint minLenBuf = max(min(sz + (sz >> 3), 2 * count), uint(65536));
307307

308308
if (_bufferSize < minLenBuf) {
309-
delete[] _buffer;
309+
if (_buffer != nullptr)
310+
delete[] _buffer;
311+
310312
_bufferSize = minLenBuf;
311313
_buffer = new byte[_bufferSize];
312314
}

src/entropy/HuffmanEncoder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace kanzi
3131
public:
3232
HuffmanEncoder(OutputBitStream& bitstream, int chunkSize = HuffmanCommon::MAX_CHUNK_SIZE);
3333

34-
~HuffmanEncoder() { _dispose(); delete[] _buffer; }
34+
~HuffmanEncoder() { _dispose(); if (_buffer != nullptr) delete[] _buffer; }
3535

3636
int updateFrequencies(uint frequencies[]);
3737

0 commit comments

Comments
 (0)