-rw-r--r-- | qmake/tools/qcomlibrary.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/qmake/tools/qcomlibrary.cpp b/qmake/tools/qcomlibrary.cpp index a7162fc..2a1b75a 100644 --- a/qmake/tools/qcomlibrary.cpp +++ b/qmake/tools/qcomlibrary.cpp @@ -60,12 +60,16 @@ QComLibrary::QComLibrary( const QString &filename ) } QComLibrary::~QComLibrary() { if ( autoUnload() ) unload(); + if ( libiface ) + libiface->release(); + if ( entry ) + entry->release(); } bool QComLibrary::unload() { if ( libiface ) { libiface->cleanup(); @@ -388,16 +392,15 @@ void QComLibrary::createInstanceInternal() QStringList reg; uint flags = 0; QCString key; bool query_done = FALSE; bool warn_mismatch = TRUE; - if ( ! query_done ) { - #ifdef QT_THREAD_SUPPORT - QMutexLocker locker( qt_global_mutexpool->get( &cache ) ); + QMutexLocker locker( qt_global_mutexpool ? + qt_global_mutexpool->get( &cache ) : 0 ); #endif // QT_THREAD_SUPPORT if ( ! cache ) { cache = new QSettings; cache->insertSearchPath( QSettings::Windows, "/Trolltech" ); cleanup_cache.set( &cache ); @@ -412,13 +415,12 @@ void QComLibrary::createInstanceInternal() key = reg[2].latin1(); query_done = TRUE; warn_mismatch = FALSE; } } - } #if defined(Q_OS_UNIX) if ( ! query_done ) { // get the query information directly from the plugin without loading if ( qt_unix_query( library(), &qt_version, &flags, &key ) ) { // info read succesfully from library @@ -458,17 +460,12 @@ void QComLibrary::createInstanceInternal() queried << QString::number( qt_version,16 ) << QString::number( flags, 16 ) << key << lastModified; if ( queried != reg ) { - -#ifdef QT_THREAD_SUPPORT - QMutexLocker locker( qt_global_mutexpool->get( &cache ) ); -#endif // QT_THREAD_SUPPORT - cache->writeEntry( regkey, queried ); // delete the cache, which forces the settings to be written delete cache; cache = 0; } |