BDE 3.61.0: Production Release

Schedule

  • The BDE team is pleased to announce that the BDE 3.61.0 production release was completed on Monday, Aug 24, 2020.

BDE 3.61.0 Highlights

New style of Allocator-Aware Component Interface Being Gradually Introduced

In the future, BDE allocator-aware components will allocate memory from a bsl::allocator<char> object rather than a bslma::Allocator pointer.

These changes are transparent to clients of the affected packages: bslma::Allocator* arguments can still be passed in and the correct conversions will occur.

The document describing this new approach is still a work in progress, and other teams should not yet adopt this development style, but if you wish to see what the new style will look like, you can take a look at components in baltzo and bdlb.

For example, here’s the difference in the default constructors in baltzo::Zoneinfo:

Older Style

#include <bslma_default.h>

// ....

 // CREATORS
 explicit Zoneinfo(bslma::Allocator *basicAllocator = 0);
     // Create a 'Zoneinfo' object having the values:
     //..
     //  numTransitions() == 0
     //  identifier()     == ""
     //..
     // Optionally specify a 'basicAllocator' used to supply memory.  If
     // 'basicAllocator' is 0, the currently installed default allocator is
     // used.

 // ....

 // ACCESSORS
 bslma::Allocator *allocator() const;
     // Return the allocator used by this object to supply memory.  Note
     // that if no allocator was supplied at construction the currently
     // installed default allocator is used.

New Style

#include <bslma_stdallocator.h>

// ....

 // TYPES
 typedef bsl::allocator<char> allocator_type;

 // CREATORS
 Zoneinfo();
 explicit Zoneinfo(const allocator_type& allocator);
     // Create a 'Zoneinfo' object having the values:
     //..
     //  numTransitions() == 0
     //  identifier()     == ""
     //..
     // Optionally specify an 'allocator' (e.g., the address of a
     // 'bslma::Allocator' object) to supply memory; otherwise, the default
     // allocator is used.

 // ....

 // ACCESSORS
 bslma::Allocator *allocator() const;
     // !DEPRECATED!: Use 'get_allocator()' instead.
     //
     // Return the allocator used by this object to supply memory.  Note
     // that if no allocator was supplied at construction the currently
     // installed default allocator is used.

 allocator_type get_allocator() const;
     // Return the allocator used by this object to supply memory.  Note
     // that if no allocator was supplied at construction the default
     // allocator in effect at construction is used.

baljsn::DatumUtil::decode methods now support depth-limiting

In order to make baljsn::DatumUtil::decode more robust, the methods limit the depth of nested array and object elements to 64 levels by default.

This default can be overridden by passing in an appropriately constructed baljsn::DatumDecoderOptions instance.

baljsn::DatumUtil behavior w.r.t. duplicate map keys clarified

The documentation for baljsn::DatumUtil now clarifies what happens if duplicate keys are present in a Datum being encoded (the first key/value pair is encoded, and the others are ignored) or in a JSON string being decoded (all key/value pairs will be present in the corresponding Datum map.

Fixed requests: 3.61.0

Summary

DRQS 153876375 P3: Please add date(time) extended binary format to BER codec

BDE balxml::ElementAttribute::namespaceId User After Free

Fix gcc9 __LINE__related test failures

AP2 upgrade of baltzo and bdld

bsl::ostringstream does not support C++ swap() member

Document baljsn_datumutil’s behavior w.r.t. duplicate keys

Add depth limiting to baljsn::DatumUtil::decode

BDE clone, build 7/7/2020, fails some unit tests (xlc version12-012019)

bdlbb::PooledBlobBufferFactory releases memory still referenced by shared_ptr

Poor ctor signature and documentation for bslmt::LockGuard

Investigate BDE fuzz testing crashes

fuzz: ‘baenet_httpparserutil’: global overflow

fuzz: ‘bdlde_quotedprintabledecoder’: global buffer overflow

fuzz: ‘baljsn_parserutil’: heap overflow

fuzz: ‘bdlde_utf8util’: assert failure

fuzz: ‘bdldfp_decimalconvertutil’: assert failure

fuzz: ‘baljsn_parserutil’: assert failure

fuzz: ‘baljsn_tokenizer’: assert failure

bsls::ByteOrderUtil::swapBytes raises error when running with UBSAN

ATAN2(x,y) actually returns ATAN2(x,x)

stringbuf case 18 is failing for dbg_exc_mt_cpp17

dpkg buildall fails for PIC builds on bhl, a_bhlbte

bael.cfg neglects the case that no space before << BALL_LOG_END

bslstl_error.t.cpp test case 5 crashes on AIX

baljsn_printutil.t test failure on AIX

bdlbb_simpleblobbufferfactory.t test failure on AIX

Release BDE 3.61.0

bslstl_stringbuf test driver has error