Changeset 561 for trunk/src/corelib/kernel/qvariant_p.h
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/corelib/kernel/qvariant_p.h
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information ([email protected]) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation ([email protected]) 5 6 ** 6 7 ** This file is part of the QtCore module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you 37 ** @nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 58 58 59 59 #include <QtCore/qglobal.h> 60 60 61 61 62 QT_BEGIN_NAMESPACE … … 92 93 #endif 93 94 95 96 97 98 99 100 101 102 103 104 105 106 94 107 // constructs a new variant if copy is 0, otherwise copy-constructs 95 108 template <class T> … … 97 110 { 98 111 if (sizeof(T) > sizeof(QVariant::Private::Data)) { 99 x->data.shared = copy ? new QVariant ::PrivateShared(new T(*static_cast<const T *>(copy)))100 : new QVariant ::PrivateShared(new T);112 x->data.shared = copy ? new QVariant)) 113 : new QVariant; 101 114 x->is_shared = true; 102 115 } else { … … 108 121 } 109 122 123 124 125 126 127 128 129 130 131 132 133 110 134 // deletes the internal structures 111 135 template <class T> 112 136 inline void v_clear(QVariant::Private *d, T* = 0) 113 137 { 138 114 139 if (sizeof(T) > sizeof(QVariant::Private::Data)) { 115 delete v_cast<T>(d); 116 delete d->data.shared; 140 //now we need to cast 141 //because QVariant::PrivateShared doesn't have a virtual destructor 142 delete static_cast<QVariantPrivateSharedEx<T>*>(d->data.shared); 117 143 } else { 118 144 v_cast<T>(d)->~T(); 119 145 } 146 120 147 } 148 149 121 150 122 151 QT_END_NAMESPACE
Note:
See TracChangeset
for help on using the changeset viewer.