qthreadstorage.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/thread/qthreadstorage.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2015 The Qt Company Ltd.-
4** Contact: http://www.qt.io/licensing/-
5**-
6** This file is part of the QtCore module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL21$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see http://www.qt.io/terms-conditions. For further-
15** information use the contact form at http://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 2.1 or version 3 as published by the Free-
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and-
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the-
22** following information to ensure the GNU Lesser General Public License-
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and-
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.-
25**-
26** As a special exception, The Qt Company gives you certain additional-
27** rights. These rights are described in The Qt Company LGPL Exception-
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.-
29**-
30** $QT_END_LICENSE$-
31**-
32****************************************************************************/-
33-
34#include "qthreadstorage.h"-
35-
36#ifndef QT_NO_THREAD-
37#include "qthread.h"-
38#include "qthread_p.h"-
39#include "qmutex.h"-
40-
41#include <string.h>-
42-
43QT_BEGIN_NAMESPACE-
44-
45// #define THREADSTORAGE_DEBUG-
46#ifdef THREADSTORAGE_DEBUG-
47# define DEBUG_MSG qtsDebug-
48-
49# include <stdio.h>-
50# include <stdarg.h>-
51void qtsDebug(const char *fmt, ...)-
52{-
53 va_list va;-
54 va_start(va, fmt);-
55-
56 fprintf(stderr, "QThreadStorage: ");-
57 vfprintf(stderr, fmt, va);-
58 fprintf(stderr, "\n");-
59-
60 va_end(va);-
61}-
62#else-
63# define DEBUG_MSG if(false)qDebug-
64#endif-
65-
66static QBasicMutex destructorsMutex;-
67typedef QVector<void (*)(void *)> DestructorMap;-
68Q_GLOBAL_STATIC(DestructorMap, destructors)
executed 258 times by 235 tests: end of block
Executed by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • tst_qbackingstore - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbrush - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • ...
executed 258 times by 235 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • tst_qbackingstore - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbrush - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • ...
executed 4610 times by 477 tests: return &holder.value;
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
guard.load() =...c::InitializedDescription
TRUEevaluated 258 times by 235 tests
Evaluated by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • tst_qbackingstore - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbrush - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • ...
FALSEnever evaluated
0-4610
69-
70QThreadStorageData::QThreadStorageData(void (*func)(void *))-
71{-
72 QMutexLocker locker(&destructorsMutex);-
73 DestructorMap *destr = destructors();-
74 if (!destr) {
!destrDescription
TRUEnever evaluated
FALSEevaluated 619 times by 294 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
0-619
75 /*-
76 the destructors vector has already been destroyed, yet a new-
77 QThreadStorage is being allocated. this can only happen during global-
78 destruction, at which point we assume that there is only one thread.-
79 in order to keep QThreadStorage working, we need somewhere to store-
80 the data, best place we have in this situation is at the tail of the-
81 current thread's tls vector. the destructor is ignored, since we have-
82 no where to store it, and no way to actually call it.-
83 */-
84 QThreadData *data = QThreadData::current();-
85 id = data->tls.count();-
86 DEBUG_MSG("QThreadStorageData: Allocated id %d, destructor %p cannot be stored", id, func);
dead code: QMessageLogger(__FILE__, 86, __PRETTY_FUNCTION__).debug("QThreadStorageData: Allocated id %d, destructor %p cannot be stored", id, func);
-
87 return;
never executed: return;
0
88 }-
89 for (id = 0; id < destr->count(); id++) {
id < destr->count()Description
TRUEevaluated 663 times by 194 tests
Evaluated by:
  • tst_Gestures
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QComplexText
  • tst_QCssParser
  • tst_QDataWidgetMapper
  • tst_QDateTimeEdit
  • ...
FALSEevaluated 619 times by 294 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
619-663
90 if (destr->at(id) == 0)
destr->at(id) == 0Description
TRUEnever evaluated
FALSEevaluated 663 times by 194 tests
Evaluated by:
  • tst_Gestures
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QComplexText
  • tst_QCssParser
  • tst_QDataWidgetMapper
  • tst_QDateTimeEdit
  • ...
0-663
91 break;
never executed: break;
0
92 }
executed 663 times by 194 tests: end of block
Executed by:
  • tst_Gestures
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QComplexText
  • tst_QCssParser
  • tst_QDataWidgetMapper
  • tst_QDateTimeEdit
  • ...
663
93 if (id == destr->count()) {
id == destr->count()Description
TRUEevaluated 619 times by 294 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
FALSEnever evaluated
0-619
94 destr->append(func);-
95 } else {
executed 619 times by 294 tests: end of block
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
619
96 (*destr)[id] = func;-
97 }
never executed: end of block
0
98 DEBUG_MSG("QThreadStorageData: Allocated id %d, destructor %p", id, func);
dead code: QMessageLogger(__FILE__, 98, __PRETTY_FUNCTION__).debug("QThreadStorageData: Allocated id %d, destructor %p", id, func);
-
99}
executed 619 times by 294 tests: end of block
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
619
100-
101QThreadStorageData::~QThreadStorageData()-
102{-
103 DEBUG_MSG("QThreadStorageData: Released id %d", id);
dead code: QMessageLogger(__FILE__, 103, __PRETTY_FUNCTION__).debug("QThreadStorageData: Released id %d", id);
-
104 QMutexLocker locker(&destructorsMutex);-
105 if (destructors())
destructors()Description
TRUEevaluated 696 times by 282 tests
Evaluated by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractsocket - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • ...
FALSEnever evaluated
0-696
106 (*destructors())[id] = 0;
executed 696 times by 282 tests: (*destructors())[id] = 0;
Executed by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractsocket - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • ...
696
107}
executed 696 times by 282 tests: end of block
Executed by:
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_largefile - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • tst_qabstractslider - unknown status
  • tst_qabstractsocket - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qaction - unknown status
  • tst_qactiongroup - unknown status
  • tst_qalgorithms - unknown status
  • tst_qanimationgroup - unknown status
  • tst_qapplication - unknown status
  • ...
696
108-
109void **QThreadStorageData::get() const-
110{-
111 QThreadData *data = QThreadData::current();-
112 if (!data) {
!dataDescription
TRUEnever evaluated
FALSEevaluated 21365276 times by 421 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
0-21365276
113 qWarning("QThreadStorage::get: QThreadStorage can only be used with threads started with QThread");-
114 return 0;
never executed: return 0;
0
115 }-
116 QVector<void *> &tls = data->tls;-
117 if (tls.size() <= id)
tls.size() <= idDescription
TRUEevaluated 1947 times by 320 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
FALSEevaluated 21363329 times by 333 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • tst_QColorDialog
  • ...
1947-21363329
118 tls.resize(id + 1);
executed 1947 times by 320 tests: tls.resize(id + 1);
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
1947
119 void **v = &tls[id];-
120-
121 DEBUG_MSG("QThreadStorageData: Returning storage %d, data %p, for thread %p",
dead code: QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__).debug("QThreadStorageData: Returning storage %d, data %p, for thread %p", id, *v, data->thread.load());
-
122 id,
dead code: QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__).debug("QThreadStorageData: Returning storage %d, data %p, for thread %p", id, *v, data->thread.load());
-
123 *v,
dead code: QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__).debug("QThreadStorageData: Returning storage %d, data %p, for thread %p", id, *v, data->thread.load());
-
124 data->thread.load());
dead code: QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__).debug("QThreadStorageData: Returning storage %d, data %p, for thread %p", id, *v, data->thread.load());
-
125-
126 return *v ? v : 0;
executed 21365276 times by 421 tests: return *v ? v : 0;
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
*vDescription
TRUEevaluated 21353179 times by 293 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QComplexText
  • ...
FALSEevaluated 12097 times by 396 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
12097-21365276
127}-
128-
129void **QThreadStorageData::set(void *p)-
130{-
131 QThreadData *data = QThreadData::current();-
132 if (!data) {
!dataDescription
TRUEnever evaluated
FALSEevaluated 12713 times by 340 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
0-12713
133 qWarning("QThreadStorage::set: QThreadStorage can only be used with threads started with QThread");-
134 return 0;
never executed: return 0;
0
135 }-
136 QVector<void *> &tls = data->tls;-
137 if (tls.size() <= id)
tls.size() <= idDescription
TRUEnever evaluated
FALSEevaluated 12713 times by 340 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
0-12713
138 tls.resize(id + 1);
never executed: tls.resize(id + 1);
0
139-
140 void *&value = tls[id];-
141 // delete any previous data-
142 if (value != 0) {
value != 0Description
TRUEevaluated 208 times by 124 tests
Evaluated by:
  • tst_QApplication
  • tst_QFontCache
  • tst_QNetworkReply
  • tst_languagechange - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qapplication - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcheckbox - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcolumnview - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcomplextext - unknown status
  • tst_qcssparser - unknown status
  • tst_qdatawidgetmapper - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdialog - unknown status
  • tst_qdialogbuttonbox - unknown status
  • ...
FALSEevaluated 12505 times by 317 tests
Evaluated by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
208-12505
143 DEBUG_MSG("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p",
dead code: QMessageLogger(__FILE__, 143, __PRETTY_FUNCTION__).debug("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p", id, value, data->thread.load());
-
144 id,
dead code: QMessageLogger(__FILE__, 143, __PRETTY_FUNCTION__).debug("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p", id, value, data->thread.load());
-
145 value,
dead code: QMessageLogger(__FILE__, 143, __PRETTY_FUNCTION__).debug("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p", id, value, data->thread.load());
-
146 data->thread.load());
dead code: QMessageLogger(__FILE__, 143, __PRETTY_FUNCTION__).debug("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p", id, value, data->thread.load());
-
147-
148 QMutexLocker locker(&destructorsMutex);-
149 DestructorMap *destr = destructors();-
150 void (*destructor)(void *) = destr ? destr->value(id) : 0;
destrDescription
TRUEevaluated 208 times by 124 tests
Evaluated by:
  • tst_QApplication
  • tst_QFontCache
  • tst_QNetworkReply
  • tst_languagechange - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qapplication - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcheckbox - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcolumnview - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcomplextext - unknown status
  • tst_qcssparser - unknown status
  • tst_qdatawidgetmapper - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdialog - unknown status
  • tst_qdialogbuttonbox - unknown status
  • ...
FALSEnever evaluated
0-208
151 locker.unlock();-
152-
153 void *q = value;-
154 value = 0;-
155-
156 if (destructor)
destructorDescription
TRUEevaluated 208 times by 124 tests
Evaluated by:
  • tst_QApplication
  • tst_QFontCache
  • tst_QNetworkReply
  • tst_languagechange - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qapplication - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcheckbox - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcolumnview - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcomplextext - unknown status
  • tst_qcssparser - unknown status
  • tst_qdatawidgetmapper - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdialog - unknown status
  • tst_qdialogbuttonbox - unknown status
  • ...
FALSEnever evaluated
0-208
157 destructor(q);
executed 208 times by 124 tests: destructor(q);
Executed by:
  • tst_QApplication
  • tst_QFontCache
  • tst_QNetworkReply
  • tst_languagechange - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qapplication - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcheckbox - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcolumnview - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcomplextext - unknown status
  • tst_qcssparser - unknown status
  • tst_qdatawidgetmapper - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdialog - unknown status
  • tst_qdialogbuttonbox - unknown status
  • ...
208
158 }
executed 208 times by 124 tests: end of block
Executed by:
  • tst_QApplication
  • tst_QFontCache
  • tst_QNetworkReply
  • tst_languagechange - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractspinbox - unknown status
  • tst_qabstracttextdocumentlayout - unknown status
  • tst_qaccessibility - unknown status
  • tst_qapplication - unknown status
  • tst_qboxlayout - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcheckbox - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcolumnview - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcomplextext - unknown status
  • tst_qcssparser - unknown status
  • tst_qdatawidgetmapper - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdialog - unknown status
  • tst_qdialogbuttonbox - unknown status
  • ...
208
159-
160 // store new data-
161 value = p;-
162 DEBUG_MSG("QThreadStorageData: Set storage %d for thread %p to %p", id, data->thread.load(), p);
dead code: QMessageLogger(__FILE__, 162, __PRETTY_FUNCTION__).debug("QThreadStorageData: Set storage %d for thread %p to %p", id, data->thread.load(), p);
-
163 return &value;
executed 12713 times by 340 tests: return &value;
Executed by:
  • tst_Compiler
  • tst_Gestures
  • tst_LargeFile
  • tst_ModelTest
  • tst_NetworkSelfTest
  • tst_QAbstractAnimation
  • tst_QAbstractButton
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractScrollArea
  • tst_QAbstractSlider
  • tst_QAbstractSpinBox
  • tst_QAbstractTextDocumentLayout
  • tst_QAccessibility
  • tst_QAction
  • tst_QActionGroup
  • tst_QAlgorithms
  • tst_QAnimationGroup
  • tst_QApplication
  • tst_QAuthenticator
  • tst_QBackingStore
  • tst_QBoxLayout
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QCheckBox
  • ...
12713
164}-
165-
166void QThreadStorageData::finish(void **p)-
167{-
168 QVector<void *> *tls = reinterpret_cast<QVector<void *> *>(p);-
169 if (!tls || tls->isEmpty() || !destructors())
!tlsDescription
TRUEnever evaluated
FALSEevaluated 640462 times by 617 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QAtomicInt
  • tst_QCommandLineParser
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractInterface
  • tst_QDBusConnectionNoBus
  • tst_QDBusConnectionNoLibDBus1
  • tst_QDBusConnection_Delayed
  • tst_QDBusPendingCall
  • tst_QDBusThreading
  • tst_QDnsLookup_Appless
  • tst_QEventLoop
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFreeList
  • tst_QFtp
  • tst_QFuture
  • tst_QGlobal
  • tst_QGlobalStatic
  • tst_QGraphicsProxyWidget
  • tst_QGuiApplication
  • tst_QGuiEventLoop
  • ...
tls->isEmpty()Description
TRUEevaluated 639450 times by 607 tests
Evaluated by:
  • tst_QApplication
  • tst_QAtomicInt
  • tst_QCommandLineParser
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractInterface
  • tst_QDBusConnectionNoBus
  • tst_QDBusConnectionNoLibDBus1
  • tst_QDBusConnection_Delayed
  • tst_QDBusPendingCall
  • tst_QDBusThreading
  • tst_QDnsLookup_Appless
  • tst_QEventLoop
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFreeList
  • tst_QFtp
  • tst_QGlobal
  • tst_QGlobalStatic
  • tst_QGraphicsProxyWidget
  • tst_QGuiApplication
  • tst_QGuiEventLoop
  • tst_QHostInfo
  • tst_QLocalSocket
  • ...
FALSEevaluated 1012 times by 270 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • ...
!destructors()Description
TRUEnever evaluated
FALSEevaluated 1012 times by 270 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • ...
0-640462
170 return; // nothing to do
executed 639450 times by 607 tests: return;
Executed by:
  • tst_QApplication
  • tst_QAtomicInt
  • tst_QCommandLineParser
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractInterface
  • tst_QDBusConnectionNoBus
  • tst_QDBusConnectionNoLibDBus1
  • tst_QDBusConnection_Delayed
  • tst_QDBusPendingCall
  • tst_QDBusThreading
  • tst_QDnsLookup_Appless
  • tst_QEventLoop
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFreeList
  • tst_QFtp
  • tst_QGlobal
  • tst_QGlobalStatic
  • tst_QGraphicsProxyWidget
  • tst_QGuiApplication
  • tst_QGuiEventLoop
  • tst_QHostInfo
  • tst_QLocalSocket
  • ...
639450
171-
172 DEBUG_MSG("QThreadStorageData: Destroying storage for thread %p", QThread::currentThread());
dead code: QMessageLogger(__FILE__, 172, __PRETTY_FUNCTION__).debug("QThreadStorageData: Destroying storage for thread %p", QThread::currentThread());
-
173 while (!tls->isEmpty()) {
!tls->isEmpty()Description
TRUEevaluated 2749 times by 270 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • ...
FALSEevaluated 1012 times by 270 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • ...
1012-2749
174 void *&value = tls->last();-
175 void *q = value;-
176 value = 0;-
177 int i = tls->size() - 1;-
178 tls->resize(i);-
179-
180 if (!q) {
!qDescription
TRUEevaluated 1370 times by 253 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QTcpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • ...
FALSEevaluated 1379 times by 188 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractspinbox - unknown status
  • ...
1370-1379
181 // data already deleted-
182 continue;
executed 1370 times by 253 tests: continue;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QTcpSocket
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractprintdialog - unknown status
  • tst_qabstractproxymodel - unknown status
  • tst_qabstractscrollarea - unknown status
  • ...
1370
183 }-
184-
185 QMutexLocker locker(&destructorsMutex);-
186 void (*destructor)(void *) = destructors()->value(i);-
187 locker.unlock();-
188-
189 if (!destructor) {
!destructorDescription
TRUEnever evaluated
FALSEevaluated 1379 times by 188 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractspinbox - unknown status
  • ...
0-1379
190 if (QThread::currentThread())
QThread::currentThread()Description
TRUEnever evaluated
FALSEnever evaluated
0
191 qWarning("QThreadStorage: Thread %p exited after QThreadStorage %d destroyed",
never executed: QMessageLogger(__FILE__, 191, __PRETTY_FUNCTION__).warning("QThreadStorage: Thread %p exited after QThreadStorage %d destroyed", QThread::currentThread(), i);
0
192 QThread::currentThread(), i);
never executed: QMessageLogger(__FILE__, 191, __PRETTY_FUNCTION__).warning("QThreadStorage: Thread %p exited after QThreadStorage %d destroyed", QThread::currentThread(), i);
0
193 continue;
never executed: continue;
0
194 }-
195 destructor(q); //crash here might mean the thread exited after qthreadstorage was destroyed-
196-
197 if (tls->size() > i) {
tls->size() > iDescription
TRUEevaluated 26 times by 26 tests
Evaluated by:
  • tst_gestures - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qaccessibility - unknown status
  • tst_qcolumnview - unknown status
  • tst_qdockwidget - unknown status
  • tst_qgraphicsproxywidget - unknown status
  • tst_qlineedit - unknown status
  • tst_qmainwindow - unknown status
  • tst_qmdiarea - unknown status
  • tst_qmdisubwindow - unknown status
  • tst_qmenu - unknown status
  • tst_qparallelanimationgroup - unknown status
  • tst_qpauseanimation - unknown status
  • tst_qprinter - unknown status
  • tst_qprogressbar - unknown status
  • tst_qpropertyanimation - unknown status
  • tst_qscroller - unknown status
  • tst_qsequentialanimationgroup - unknown status
  • tst_qshortcut - unknown status
  • tst_qstatemachine - unknown status
  • tst_qstylesheetstyle - unknown status
  • tst_qtoolbar - unknown status
  • tst_qtreeview - unknown status
  • tst_qwidget - unknown status
  • tst_qwidget_window - unknown status
  • ...
FALSEevaluated 1353 times by 188 tests
Evaluated by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractspinbox - unknown status
  • ...
26-1353
198 //re reset the tls in case it has been recreated by its own destructor.-
199 (*tls)[i] = 0;-
200 }
executed 26 times by 26 tests: end of block
Executed by:
  • tst_gestures - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qaccessibility - unknown status
  • tst_qcolumnview - unknown status
  • tst_qdockwidget - unknown status
  • tst_qgraphicsproxywidget - unknown status
  • tst_qlineedit - unknown status
  • tst_qmainwindow - unknown status
  • tst_qmdiarea - unknown status
  • tst_qmdisubwindow - unknown status
  • tst_qmenu - unknown status
  • tst_qparallelanimationgroup - unknown status
  • tst_qpauseanimation - unknown status
  • tst_qprinter - unknown status
  • tst_qprogressbar - unknown status
  • tst_qpropertyanimation - unknown status
  • tst_qscroller - unknown status
  • tst_qsequentialanimationgroup - unknown status
  • tst_qshortcut - unknown status
  • tst_qstatemachine - unknown status
  • tst_qstylesheetstyle - unknown status
  • tst_qtoolbar - unknown status
  • tst_qtreeview - unknown status
  • tst_qwidget - unknown status
  • tst_qwidget_window - unknown status
  • ...
26
201 }
executed 1379 times by 188 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractspinbox - unknown status
  • ...
1379
202 tls->clear();-
203}
executed 1012 times by 270 tests: end of block
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QApplication
  • tst_QDnsLookup_Appless
  • tst_QFuture
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkDiskCache
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QPainter
  • tst_QSettings
  • tst_QTcpSocket
  • tst_QUuid
  • tst_QXmlInputSource
  • tst_Spdy
  • tst_compiler - unknown status
  • tst_gestures - unknown status
  • tst_lancelot - unknown status
  • tst_languagechange - unknown status
  • tst_modeltest - unknown status
  • tst_networkselftest - unknown status
  • tst_qabstractanimation - unknown status
  • tst_qabstractbutton - unknown status
  • tst_qabstractitemview - unknown status
  • ...
1012
204-
205/*!-
206 \class QThreadStorage-
207 \inmodule QtCore-
208 \brief The QThreadStorage class provides per-thread data storage.-
209-
210 \threadsafe-
211-
212 \ingroup thread-
213-
214 QThreadStorage is a template class that provides per-thread data-
215 storage.-
216-
217 The setLocalData() function stores a single thread-specific value-
218 for the calling thread. The data can be accessed later using-
219 localData().-
220-
221 The hasLocalData() function allows the programmer to determine if-
222 data has previously been set using the setLocalData() function.-
223 This is also useful for lazy initializiation.-
224-
225 If T is a pointer type, QThreadStorage takes ownership of the data-
226 (which must be created on the heap with \c new) and deletes it when-
227 the thread exits, either normally or via termination.-
228-
229 For example, the following code uses QThreadStorage to store a-
230 single cache for each thread that calls the cacheObject() and-
231 removeFromCache() functions. The cache is automatically-
232 deleted when the calling thread exits.-
233-
234 \snippet threads/threads.cpp 7-
235 \snippet threads/threads.cpp 8-
236 \snippet threads/threads.cpp 9-
237-
238 \section1 Caveats-
239-
240 \list-
241-
242 \li The QThreadStorage destructor does not delete per-thread data.-
243 QThreadStorage only deletes per-thread data when the thread exits-
244 or when setLocalData() is called multiple times.-
245-
246 \li QThreadStorage can be used to store data for the \c main()-
247 thread. QThreadStorage deletes all data set for the \c main()-
248 thread when QApplication is destroyed, regardless of whether or-
249 not the \c main() thread has actually finished.-
250-
251 \endlist-
252-
253 \sa QThread-
254*/-
255-
256/*!-
257 \fn QThreadStorage::QThreadStorage()-
258-
259 Constructs a new per-thread data storage object.-
260*/-
261-
262/*!-
263 \fn QThreadStorage::~QThreadStorage()-
264-
265 Destroys the per-thread data storage object.-
266-
267 Note: The per-thread data stored is not deleted. Any data left-
268 in QThreadStorage is leaked. Make sure that all threads using-
269 QThreadStorage have exited before deleting the QThreadStorage.-
270-
271 \sa hasLocalData()-
272*/-
273-
274/*!-
275 \fn bool QThreadStorage::hasLocalData() const-
276-
277 If T is a pointer type, returns \c true if the calling thread has-
278 non-zero data available.-
279-
280 If T is a value type, returns whether the data has already been-
281 constructed by calling setLocalData or localData.-
282-
283 \sa localData()-
284*/-
285-
286/*!-
287 \fn T &QThreadStorage::localData()-
288-
289 Returns a reference to the data that was set by the calling-
290 thread.-
291-
292 If no data has been set, this will create a default constructed-
293 instance of type T.-
294-
295 \sa hasLocalData()-
296*/-
297-
298/*!-
299 \fn const T QThreadStorage::localData() const-
300 \overload-
301-
302 Returns a copy of the data that was set by the calling thread.-
303-
304 \sa hasLocalData()-
305*/-
306-
307/*!-
308 \fn void QThreadStorage::setLocalData(T data)-
309-
310 Sets the local data for the calling thread to \a data. It can be-
311 accessed later using the localData() functions.-
312-
313 If T is a pointer type, QThreadStorage takes ownership of the data-
314 and deletes it automatically either when the thread exits (either-
315 normally or via termination) or when setLocalData() is called again.-
316-
317 \sa localData(), hasLocalData()-
318*/-
319-
320#endif // QT_NO_THREAD-
321-
322QT_END_NAMESPACE-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9