diff --git a/Foundation/include/Poco/Dynamic/Var.h b/Foundation/include/Poco/Dynamic/Var.h index 0a58c755f..e5a49824a 100644 --- a/Foundation/include/Poco/Dynamic/Var.h +++ b/Foundation/include/Poco/Dynamic/Var.h @@ -788,7 +788,11 @@ inline bool Var::isEmpty() const inline bool Var::isArray() const { - return !isEmpty() && !isString(); + if (isEmpty() || + isString()) return false; + + VarHolder* pHolder = content(); + return pHolder ? pHolder->isArray() : false; } diff --git a/Foundation/testsuite/src/VarTest.cpp b/Foundation/testsuite/src/VarTest.cpp index fc6ab83a1..5ffcd4a4f 100644 --- a/Foundation/testsuite/src/VarTest.cpp +++ b/Foundation/testsuite/src/VarTest.cpp @@ -1863,22 +1863,22 @@ void VarTest::testIsArray() assert (!d0.isArray()); assert (!d1.isArray()); - assert (d2.isArray()); - assert (d3.isArray()); - assert (d4.isArray()); - assert (d5.isArray()); - assert (d6.isArray()); - assert (d7.isArray()); - assert (d8.isArray()); - assert (d9.isArray()); - assert (d10.isArray()); - assert (d11.isArray()); - assert (d12.isArray()); - assert (d13.isArray()); - assert (d14.isArray()); - assert (d15.isArray()); + assert (!d2.isArray()); + assert (!d3.isArray()); + assert (!d4.isArray()); + assert (!d5.isArray()); + assert (!d6.isArray()); + assert (!d7.isArray()); + assert (!d8.isArray()); + assert (!d9.isArray()); + assert (!d10.isArray()); + assert (!d11.isArray()); + assert (!d12.isArray()); + assert (!d13.isArray()); + assert (!d14.isArray()); + assert (!d15.isArray()); assert (d16.isArray()); - assert (d17.isArray()); + assert (!d17.isArray()); }