From 88e9515cc4300d841b16f17fe6b5c8c0d6de3562 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 5 Mar 2010 13:12:24 +0100 Subject: QMetaType::type(): return immediately if the typename is empty No need to look up / lock data structures if we know that the comparisons will all fail. This was encountered because QMetaMethod::typeName() returns an empty string if the return type is void (even though there is a QMetaType::Void (value 0) with name "void"). This was causing the QtScript meta-object binding to spend a lot of its time looking up the type for an empty string when invoking slots that return void. Rather than having these checks in QtScript and who knows where else, it's better that QMetaType::type() does it itself. No regressions in the qmetatype benchmark. Reviewed-by: Olivier Goffart Reviewed-by: Harald Fernengel --- src/corelib/kernel/qmetatype.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 8f2d025..30af6fa 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -590,6 +590,8 @@ bool QMetaType::isRegistered(int type) int QMetaType::type(const char *typeName) { int length = qstrlen(typeName); + if (!length) + return 0; int type = qMetaTypeStaticType(typeName, length); if (!type) { QReadLocker locker(customTypesLock()); -- cgit v0.12