From a26c4ddb2be696a72beadb5b85bb2976e69ddec2 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sun, 11 Jun 2023 18:42:57 +0900 Subject: [PATCH] Fix speed issue (on some distros) caused by wrong static pointer initialization. This resolves issue TDE/tde#128. Signed-off-by: Michele Calgaro --- src/kernel/qguardedptr.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/kernel/qguardedptr.cpp b/src/kernel/qguardedptr.cpp index 3ac27e7a..df1298c0 100644 --- a/src/kernel/qguardedptr.cpp +++ b/src/kernel/qguardedptr.cpp @@ -194,16 +194,26 @@ /* Internal classes */ -static TQObject *__ptrpriv_root_obj = new TQObject(0, "_ptrpriv_root"); +static TQObject *__ptrpriv_root_obj = nullptr; + +static TQObject* getGuardedPtrPrivateRoot() +{ + if (!__ptrpriv_root_obj) + { + __ptrpriv_root_obj = new TQObject(0, "_ptrpriv_root"); + } + return __ptrpriv_root_obj; +} TQGuardedPtrPrivate::TQGuardedPtrPrivate( TQObject* o) - : TQObject(__ptrpriv_root_obj, "_ptrpriv" ), obj( o ) + : TQObject(getGuardedPtrPrivateRoot(), "_ptrpriv" ), obj( o ) { if ( obj ) + { connect( obj, SIGNAL( destroyed() ), this, SLOT( objectDestroyed() ) ); + } } - TQGuardedPtrPrivate::~TQGuardedPtrPrivate() { }