The getAsArray variation that uses a default value for NULL elements crashed when the

array value itself was NULL.

Choosen to return without error adding zero elements to the list. If you really need strict NULL handling do this
using the other functions possibly checking for null before hand to choose other code path.
This commit is contained in:
eelke 2018-09-19 08:45:01 +02:00
parent 8d3bddfa1e
commit 0ba632afd1

View file

@ -48,7 +48,7 @@ namespace Pgsql {
{ {
if (m_val == nullptr) { if (m_val == nullptr) {
if (nullhandling == NullHandling::Throw) if (nullhandling == NullHandling::Throw)
throw std::runtime_error("Unexpected NULL value in array"); throw std::runtime_error("Unexpected NULL value for array");
} }
else { else {
using value_type = E; using value_type = E;
@ -77,6 +77,8 @@ namespace Pgsql {
template <typename E, typename I> template <typename E, typename I>
void getAsArray(I insert_iter, const E &value_for_nulls) const void getAsArray(I insert_iter, const E &value_for_nulls) const
{ {
if (m_val == nullptr) return;
using value_type = E; using value_type = E;
ArrayParser parser(m_val); ArrayParser parser(m_val);
for (;;) { for (;;) {