diff --git a/src/corelib/kernel/qjnitypes.h b/src/corelib/kernel/qjnitypes.h index 9c2e1efb772..17bbf0aeb5d 100644 --- a/src/corelib/kernel/qjnitypes.h +++ b/src/corelib/kernel/qjnitypes.h @@ -241,23 +241,22 @@ static constexpr bool isPrimitiveType() return typeSignature().size() == 2; } -template -static constexpr bool isObjectType() -{ - if constexpr(std::is_convertible::value) { - return true; - } else { - constexpr auto signature = typeSignature(); - return (signature.startsWith('L') || signature.startsWith('[')) - && signature.endsWith(';'); - } -} - template static constexpr bool isArrayType() { constexpr auto signature = typeSignature(); - return signature.startsWith('['); + return signature.startsWith('[') && signature.size() > 2; +} + +template +static constexpr bool isObjectType() +{ + if constexpr (std::is_convertible_v) { + return true; + } else { + constexpr auto signature = typeSignature(); + return (signature.startsWith('L') && signature.endsWith(';')) || isArrayType(); + } } template