kernel/qsharedmemory.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4 -
5 -
6 -
7QString -
8QSharedMemoryPrivate::makePlatformSafeKey(const QString &key, -
9 const QString &prefix) -
10{ -
11 if (key.isEmpty())
evaluated: key.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:46
1-46
12 return QString();
executed: return QString();
Execution Count:1
1
13 -
14 QString result = prefix; -
15 -
16 QString part1 = key; -
17 part1.replace(QRegExp(QLatin1String("[^A-Za-z]")), QString()); -
18 result.append(part1); -
19 -
20 QByteArray hex = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Sha1).toHex(); -
21 result.append(QLatin1String(hex)); -
22 -
23 -
24 -
25 return QDir::tempPath() + QLatin1Char('/') + result;
executed: return QDir::tempPath() + QLatin1Char('/') + result;
Execution Count:46
46
26 -
27} -
28QSharedMemory::QSharedMemory(QObject *parent) -
29 : QObject(*new QSharedMemoryPrivate, parent) -
30{ -
31}
executed: }
Execution Count:1
1
32QSharedMemory::QSharedMemory(const QString &key, QObject *parent) -
33 : QObject(*new QSharedMemoryPrivate, parent) -
34{ -
35 setKey(key); -
36}
never executed: }
0
37QSharedMemory::~QSharedMemory() -
38{ -
39 setKey(QString()); -
40}
executed: }
Execution Count:1
1
41void QSharedMemory::setKey(const QString &key) -
42{ -
43 QSharedMemoryPrivate * const d = d_func(); -
44 if (key == d->key && d->makePlatformSafeKey(key) == d->nativeKey)
partially evaluated: key == d->key
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
partially evaluated: d->makePlatformSafeKey(key) == d->nativeKey
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
45 return;
executed: return;
Execution Count:1
1
46 -
47 if (isAttached())
never evaluated: isAttached()
0
48 detach();
never executed: detach();
0
49 d->cleanHandle(); -
50 d->key = key; -
51 d->nativeKey = d->makePlatformSafeKey(key); -
52}
never executed: }
0
53void QSharedMemory::setNativeKey(const QString &key) -
54{ -
55 QSharedMemoryPrivate * const d = d_func(); -
56 if (key == d->nativeKey && d->key.isNull())
never evaluated: key == d->nativeKey
never evaluated: d->key.isNull()
0
57 return;
never executed: return;
0
58 -
59 if (isAttached())
never evaluated: isAttached()
0
60 detach();
never executed: detach();
0
61 d->cleanHandle(); -
62 d->key = QString(); -
63 d->nativeKey = key; -
64}
never executed: }
0
65 -
66bool QSharedMemoryPrivate::initKey() -
67{ -
68 if (!cleanHandle())
never evaluated: !cleanHandle()
0
69 return false;
never executed: return false;
0
70 -
71 systemSemaphore.setKey(QString(), 1); -
72 systemSemaphore.setKey(key, 1); -
73 if (systemSemaphore.error() != QSystemSemaphore::NoError) {
never evaluated: systemSemaphore.error() != QSystemSemaphore::NoError
0
74 QString function = QLatin1String("QSharedMemoryPrivate::initKey"); -
75 errorString = QSharedMemory::tr("%1: unable to set key on lock").arg(function); -
76 switch(systemSemaphore.error()) { -
77 case QSystemSemaphore::PermissionDenied: -
78 error = QSharedMemory::PermissionDenied; -
79 break;
never executed: break;
0
80 case QSystemSemaphore::KeyError: -
81 error = QSharedMemory::KeyError; -
82 break;
never executed: break;
0
83 case QSystemSemaphore::AlreadyExists: -
84 error = QSharedMemory::AlreadyExists; -
85 break;
never executed: break;
0
86 case QSystemSemaphore::NotFound: -
87 error = QSharedMemory::NotFound; -
88 break;
never executed: break;
0
89 case QSystemSemaphore::OutOfResources: -
90 error = QSharedMemory::OutOfResources; -
91 break;
never executed: break;
0
92 case QSystemSemaphore::UnknownError: -
93 default: -
94 error = QSharedMemory::UnknownError; -
95 break;
never executed: break;
0
96 } -
97 return false;
never executed: return false;
0
98 } -
99 -
100 errorString = QString(); -
101 error = QSharedMemory::NoError; -
102 return true;
never executed: return true;
0
103} -
104QString QSharedMemory::key() const -
105{ -
106 const QSharedMemoryPrivate * const d = d_func(); -
107 return d->key;
never executed: return d->key;
0
108} -
109QString QSharedMemory::nativeKey() const -
110{ -
111 const QSharedMemoryPrivate * const d = d_func(); -
112 return d->nativeKey;
never executed: return d->nativeKey;
0
113} -
114bool QSharedMemory::create(int size, AccessMode mode) -
115{ -
116 QSharedMemoryPrivate * const d = d_func(); -
117 -
118 if (!d->initKey())
never evaluated: !d->initKey()
0
119 return false;
never executed: return false;
0
120 -
121 -
122 -
123 -
124 -
125 d->systemSemaphore.setKey(d->key, 1, QSystemSemaphore::Create); -
126 -
127 -
128 -
129 QString function = QLatin1String("QSharedMemory::create"); -
130 -
131 QSharedMemoryLocker lock(this); -
132 if (!d->key.isNull() && !d->tryLocker(&lock, function))
never evaluated: !d->key.isNull()
never evaluated: !d->tryLocker(&lock, function)
0
133 return false;
never executed: return false;
0
134 -
135 -
136 if (size <= 0) {
never evaluated: size <= 0
0
137 d->error = QSharedMemory::InvalidSize; -
138 d->errorString = -
139 QSharedMemory::tr("%1: create size is less then 0").arg(function); -
140 return false;
never executed: return false;
0
141 } -
142 -
143 if (!d->create(size))
never evaluated: !d->create(size)
0
144 return false;
never executed: return false;
0
145 -
146 return d->attach(mode);
never executed: return d->attach(mode);
0
147} -
148 -
149 -
150 -
151 -
152 -
153 -
154 -
155int QSharedMemory::size() const -
156{ -
157 const QSharedMemoryPrivate * const d = d_func(); -
158 return d->size;
never executed: return d->size;
0
159} -
160bool QSharedMemory::attach(AccessMode mode) -
161{ -
162 QSharedMemoryPrivate * const d = d_func(); -
163 -
164 if (isAttached() || !d->initKey())
never evaluated: isAttached()
never evaluated: !d->initKey()
0
165 return false;
never executed: return false;
0
166 -
167 QSharedMemoryLocker lock(this); -
168 if (!d->key.isNull() && !d->tryLocker(&lock, QLatin1String("QSharedMemory::attach")))
never evaluated: !d->key.isNull()
never evaluated: !d->tryLocker(&lock, QLatin1String("QSharedMemory::attach"))
0
169 return false;
never executed: return false;
0
170 -
171 -
172 if (isAttached() || !d->handle())
never evaluated: isAttached()
never evaluated: !d->handle()
0
173 return false;
never executed: return false;
0
174 -
175 return d->attach(mode);
never executed: return d->attach(mode);
0
176} -
177 -
178 -
179 -
180 -
181 -
182 -
183 -
184bool QSharedMemory::isAttached() const -
185{ -
186 const QSharedMemoryPrivate * const d = d_func(); -
187 return (0 != d->memory);
never executed: return (0 != d->memory);
0
188} -
189bool QSharedMemory::detach() -
190{ -
191 QSharedMemoryPrivate * const d = d_func(); -
192 if (!isAttached())
never evaluated: !isAttached()
0
193 return false;
never executed: return false;
0
194 -
195 -
196 QSharedMemoryLocker lock(this); -
197 if (!d->key.isNull() && !d->tryLocker(&lock, QLatin1String("QSharedMemory::detach")))
never evaluated: !d->key.isNull()
never evaluated: !d->tryLocker(&lock, QLatin1String("QSharedMemory::detach"))
0
198 return false;
never executed: return false;
0
199 -
200 -
201 return d->detach();
never executed: return d->detach();
0
202} -
203void *QSharedMemory::data() -
204{ -
205 QSharedMemoryPrivate * const d = d_func(); -
206 return d->memory;
never executed: return d->memory;
0
207} -
208const void* QSharedMemory::constData() const -
209{ -
210 const QSharedMemoryPrivate * const d = d_func(); -
211 return d->memory;
never executed: return d->memory;
0
212} -
213 -
214 -
215 -
216 -
217const void *QSharedMemory::data() const -
218{ -
219 const QSharedMemoryPrivate * const d = d_func(); -
220 return d->memory;
never executed: return d->memory;
0
221} -
222bool QSharedMemory::lock() -
223{ -
224 QSharedMemoryPrivate * const d = d_func(); -
225 if (d->lockedByMe) {
never evaluated: d->lockedByMe
0
226 QMessageLogger("kernel/qsharedmemory.cpp", 509, __PRETTY_FUNCTION__).warning("QSharedMemory::lock: already locked"); -
227 return true;
never executed: return true;
0
228 } -
229 if (d->systemSemaphore.acquire()) {
never evaluated: d->systemSemaphore.acquire()
0
230 d->lockedByMe = true; -
231 return true;
never executed: return true;
0
232 } -
233 QString function = QLatin1String("QSharedMemory::lock"); -
234 d->errorString = QSharedMemory::tr("%1: unable to lock").arg(function); -
235 d->error = QSharedMemory::LockError; -
236 return false;
never executed: return false;
0
237} -
238bool QSharedMemory::unlock() -
239{ -
240 QSharedMemoryPrivate * const d = d_func(); -
241 if (!d->lockedByMe)
never evaluated: !d->lockedByMe
0
242 return false;
never executed: return false;
0
243 d->lockedByMe = false; -
244 if (d->systemSemaphore.release())
never evaluated: d->systemSemaphore.release()
0
245 return true;
never executed: return true;
0
246 QString function = QLatin1String("QSharedMemory::unlock"); -
247 d->errorString = QSharedMemory::tr("%1: unable to unlock").arg(function); -
248 d->error = QSharedMemory::LockError; -
249 return false;
never executed: return false;
0
250} -
251QSharedMemory::SharedMemoryError QSharedMemory::error() const -
252{ -
253 const QSharedMemoryPrivate * const d = d_func(); -
254 return d->error;
never executed: return d->error;
0
255} -
256QString QSharedMemory::errorString() const -
257{ -
258 const QSharedMemoryPrivate * const d = d_func(); -
259 return d->errorString;
never executed: return d->errorString;
0
260} -
261 -
262 -
263 -
264 -
265 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial