From 345d3efe3f20c7531819db1512c735fe88dad186 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Thu, 14 Sep 2023 19:11:48 +0200 Subject: [PATCH] JNI: fix isObjectType trait function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Java arrays are always objects, also if they don't contain objects. Change-Id: I376c9cc39445d7d9aaac093e4cd6995c8322ed0d Reviewed-by: Petri Virkkunen Reviewed-by: Tinja Paavoseppä Reviewed-by: Zoltan Gera (cherry picked from commit d2f950e88f6f3966e5593e06f307959d12c19ec8) Reviewed-by: Volker Hilsheimer --- src/corelib/kernel/qjnitypes.h | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) 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