|
|
@ -1071,13 +1071,20 @@ QStringData::QStringData(QChar *u, uint l, uint m) : QShared(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QStringData::~QStringData() {
|
|
|
|
QStringData::~QStringData() {
|
|
|
|
if ( unicode ) delete[] ((char*)unicode);
|
|
|
|
if ( unicode ) {
|
|
|
|
|
|
|
|
delete[] ((char*)unicode);
|
|
|
|
|
|
|
|
}
|
|
|
|
if ( ascii && security_unpaged ) {
|
|
|
|
if ( ascii && security_unpaged ) {
|
|
|
|
munlock(ascii, LINUX_MEMLOCK_LIMIT_BYTES);
|
|
|
|
munlock(ascii, LINUX_MEMLOCK_LIMIT_BYTES);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( ascii ) delete[] ascii;
|
|
|
|
if ( ascii ) {
|
|
|
|
|
|
|
|
delete[] ascii;
|
|
|
|
|
|
|
|
}
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|
if ( mutex ) delete mutex;
|
|
|
|
if ( mutex ) {
|
|
|
|
|
|
|
|
delete mutex;
|
|
|
|
|
|
|
|
mutex = NULL;
|
|
|
|
|
|
|
|
}
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1675,6 +1682,13 @@ QString::QString( QStringData* dd, bool /* dummy */ ) {
|
|
|
|
|
|
|
|
|
|
|
|
QString::~QString()
|
|
|
|
QString::~QString()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
#if defined(QT_CHECK_RANGE)
|
|
|
|
|
|
|
|
if (!d) {
|
|
|
|
|
|
|
|
qWarning( "QString::~QString: Double free or delete detected!" );
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|
d->mutex->lock();
|
|
|
|
d->mutex->lock();
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
@ -1684,6 +1698,7 @@ QString::~QString()
|
|
|
|
d->mutex->unlock();
|
|
|
|
d->mutex->unlock();
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
|
#endif // QT_THREAD_SUPPORT
|
|
|
|
d->deleteSelf();
|
|
|
|
d->deleteSelf();
|
|
|
|
|
|
|
|
d = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|
#ifdef QT_THREAD_SUPPORT
|
|
|
|