summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
Commit message (Collapse)AuthorAgeFilesLines
* Fix change-of-sign warning found by ICCThiago Macieira2013-07-031-1/+1
| | | | | | | | | | | | | qstring.cpp(3896): error #68: integer conversion resulted in a change of sign The line before also had 0x8000, but since there was no addition, 0x8000 was a literal converted to short. However, 0xff + 0x8000 is an int, and 0x80ff is positive, while short(0x80ff) is negative. Change-Id: I445ff401d817b643479e54320525890ce12bbfe5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Ensure we don't repeat QTBUG-30931 in Qt5Konstantin Ritt2013-06-181-5/+4
| | | | | | | | | | The issue is already fixed in 5.0 but let's be nice and ensure the issue won't be reintroduced later. Task-number: QTBUG-30931 Change-Id: Ia6944acaf6e7217f8d0f1fa75d0e9977db11d892 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove use of 'register' from Qt.Stephen Kelly2013-06-177-36/+36
| | | | | | | | | | It is deprecated and clang is starting to warn about it. Patch mostly generated by clang itself, with some careful grep and sed for the platform-specific parts. Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSystemLocale: Fix the time format on BlackBerry 10El Mehdi Fekari2013-06-141-2/+2
| | | | | | | | The time format should depend on the device settings (24 hour format) Change-Id: I452d9b7158d39c4a657adfd9e64c99549eeda4ff Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Q_DISABLE_COPY doesn't need a ; at the endAlbert Astals Cid2013-06-101-1/+1
| | | | | | | | | Fixes warnings when -Wpedantic is enabled Change-Id: I8fcfbfa9bb3a5ab61c85f8cb74660f6f7e459fc0 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Alejandro Exojo Piqueras <suy@badopi.org> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QtCore: Fix MSVC-64 warnings about integer truncation.Friedemann Kleint2013-06-081-3/+3
| | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I79af7497420d468b5bc7c48c9ae21b86117519a9 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Fix typo in QAlgorithms documentation.Mitch Curtis2013-06-051-1/+1
| | | | | Change-Id: Ic9107f427acc1e009779d39e0a204ea81d54aee7 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Prevent negative size in QBitArray, QVector and QVarLengthArray ctors.Mitch Curtis2013-06-053-3/+8
| | | | | | | | | | | | | | | | | | As shown in QTBUG-24345, QBitArray will exhibit invalid reads when initialised with a negative size and run under valgrind. QVector and QVarLengthArray both cause a crash if initialised with a negative size. This patch enforces sizes greater than or equal to 0 with asserts and existing if statements, and hence impose no performance penalty for release builds. Task-number: QTBUG-24345 Task-number: QTBUG-30037 Change-Id: I9a969f6016e0a59904a60bbfe9e5360e6f523b87 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use the GCC inline assembly when building for MinGWThiago Macieira2013-06-041-5/+5
| | | | | | | | | | | MinGW has a longstanding problem of providing the MSVC intrinsics that every Windows developer expects to be there. Other projects have run into those problems. So instead just use the GCC inline assembly. Change-Id: I5651f97f9a4dfbf98ebbf063f91f221eab80b224 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Mention QRect's int min/max constraints in detailed description.Mitch Curtis2013-06-041-0/+6
| | | | | | | Task-number: QTBUG-25732 Change-Id: If330768c3075568f09593ed17f26389d3dec3335 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Fix QLocalePrivate object leakingjian liang2013-05-201-1/+1
| | | | | | | | | Set ref count to zero in QLocalePrivate::create() to avoid QLocalePrivate object leaking. Change-Id: I8948c27d59b2038266ab04c6113610b9b4481b45 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Repurpose the former Q_OS_MAC synonym "Q_OS_MACX" to mean "OS X".Jake Petroules2013-05-091-1/+1
| | | | | | | | | | | | | | The equivalent was done earlier for qmake, and this will enable developers writing OS X-specific code to use #ifdef Q_OS_MACX as opposed to overly verbose #if defined(Q_OS_MAC) && !defined(Q_OS_IOS). The sole usage of Q_OS_MACX within qtbase has been changed to the now appropriate value and documentation has been updated. Change-Id: I2c59eea02e94b691b705170b2f96a97940fdc756 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert QDateTime serialisation to pre-Qt 5 behaviour.Mitch Curtis2013-05-081-2/+5
| | | | | | | | | | | | | | In Qt 5, I managed to break the guarantee that a deserialised local datetime is the same time of day (potentially different UTC time), regardless of which timezone it was serialised in. This happened after I fixed QTBUG-4057 with If650e7960dca7b6ab44b8233410a6369c41df73a, which serialised datetimes as UTC. This patch reverts QDateTime serialisation to pre-Qt 5 behaviour to restore the guarantee and consequently re-opens QTBUG-4057. Change-Id: Iea877f7ed886f530b928067789b53534e89fe8cb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QLocalePrivate: remove unused dataPointerForIndex functionThiago Macieira2013-05-082-14/+0
| | | | | | Change-Id: I0cd3f8a526e11c3df53fe0cbb063e01c5a3564f9 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Specify gnu_printf for message formatting with MinGWJonathan Liu2013-05-081-0/+8
| | | | | | | | | The custom printf formatter Qt ships supports e.g. %lld, which is part of gnu_printf, but not ms_printf. This fixes a lot of MinGW warnings. Change-Id: Iff600f20ac23ecb88c4b569d2e668f5d4af6ef27 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Add qt_hash(QStringRef) overloadGiuseppe D'Angelo2013-05-072-4/+22
| | | | | | | | This enables fixing a performance regression compared to Qt 4. Also, add some qt_hash tests. Change-Id: Id830e17dec99fb67e5930c80029ac2233b2f427e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* QLocale: cache the QLocalePrivate for the default QLocaleThiago Macieira2013-05-011-6/+9
| | | | | Change-Id: I6f05da4d426a0aa685dd9f2fd0020e413a4bebad Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QLocale: cache the C locale's privateThiago Macieira2013-05-012-1/+15
| | | | | Change-Id: I81bbfeffebb5b7fc29d67bb7127beaf13838ac9f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix QLocale::standaloneMonthName when d->m_data == systemData()Albert Astals Cid2013-05-016-3/+17
| | | | | | | | | | | | | | | | | At the moment if d->m_data == systemData() it calls systemLocale()->query but forgets about the standalone part so you get the wrong data This patch introduces the new enums so that backends can implement properly the standaloneMonthName feature properly. At the moment the Windows and Mac ones still return the monthName, the Unix and Blackberry ones return the data we store in months_data Change-Id: Idc5a50b04ab1f914f16c7385be1dca2e027feae3 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Mehdi Fekari <mfekari@blackberry.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QLocalePrivate PODThiago Macieira2013-04-302-12/+21
| | | | | | | | | QSharedDataPointer does not actually need a class derived from QSharedData. All it needs is a member called "ref". Change-Id: I2f7fe4cc143478ef7ef64681eada16e2d4c2e63a Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* QLocalePrivate: remove QLocalePrivate::m_indexThiago Macieira2013-04-302-27/+10
| | | | | | | | | | | | | It's not used anywhere, so we don't need to cache the locale data index. We already have the pointer to the QLocaleData anyway. This saves us a few roundtrips calculating the index from the data pointer only to get the data pointer again. Change-Id: I6905d20a382ddcb9fb04cc886a17499b467f905a Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Move the code that creates QLocalePrivate to separate functionsThiago Macieira2013-04-301-27/+33
| | | | | | | | | | | | Direct benefit is that the code between the two QLocale constructors taking language, country and (maybe) scripts is merged. This will also allow us to cache the QLocale::c() result. Change-Id: Ia46c5a37764dc287bfcd3a52a022ac413c53a582 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove QLocalePrivate::m_localeIDhjk2013-04-232-36/+32
| | | | | | | | | | | | | | It was only used for toUpper/toLower but always computed in the constructor, including QString::toLatin1 conversion and allocations. This needlessly slows down all other uses, including supposedly "cheap" operations QString::toDouble, or accesses inside QResourceFileEngine. The benchmarks indicates that doing it always when needed is bearable. There's still a lot of improvement potential on these code paths. Change-Id: I88b637ee11f9f7ea614f8da4ec5df0bf40664fce Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Use a QVector<QDateTime> instead of an array in QFileInfoPrivatehjk2013-04-231-0/+4
| | | | | | | | | | | | Since QDateTime is pimpled, default allocation is expensive and regularly shows up in profiles of code using QFileInfo. For Qt 6, QDateTime's data members should be put into the class proper, and this change here reverted. Change-Id: I94a50e467b12772e1076181eb2ac6031984d8802 Reviewed-by: Thorbjørn Lindeijer <bjorn@lindeijer.nl> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Make sure to also check for null CFPropertyLists.Thiago Macieira2013-04-191-0/+3
| | | | | | | | | | In 1b08e0307dfebe561fbb0819a2d6b53edd8e8e93, I removed the null check by accident. It's possible for the Darwin API to return a null property list. Task-number: QTBUG-30760 Change-Id: Iaf0125767fe4b47c19810b70483a5219e94e4305 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* QVector: Fix signedness warning in assert.Friedemann Kleint2013-04-111-1/+1
| | | | | | | Task-number: QTBUG-30331 Change-Id: I91b346b36162e8146a05babd24afa4bfb7259bec Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Update QLocale data to CLDRv23Konstantin Ritt2013-04-013-4073/+4277
| | | | | | | | Say hello to Interlingua and Mongolian once again. Change-Id: I735fbc5793f34620be1f6932a251224b9ded02e3 Reviewed-by: Denis Dzyubenko <denis@ddenis.info> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix typos in QBBSystemLocaleDataEl Mehdi Fekari2013-03-302-9/+9
| | | | | Change-Id: Ic893cdf4a274af660fae7f39011851318f0d244b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* QLocale: Report textDirection() by looking to the locale scriptKonstantin Ritt2013-03-301-13/+20
| | | | | Change-Id: Ic562b0301271ba414d5d3ff75a308d84bd288f56 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make the inline CPU detection functions also staticThiago Macieira2013-03-261-2/+2
| | | | | | | | | | | | Since qCpuHasFeature() checks the static qCompilerCpuFeatures variable and that variable's value might change depending on the compiler flags, it's best to ensure that the function is not subject to link-time merging. That would be bad if it happened when qCpuHasFeature() was used from a file with higher CPU compiler settings than the default, as it would incorrectly conclude that certain features are always available. Change-Id: I8bacde056fb89869ec1d306a163742e72522315e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Fix a bug in QSystemLocale on BB10El Mehdi Fekari2013-03-262-18/+20
| | | | | | | | | Call qt_safe_open in the constructor to avoid opening the pps files several times. Change-Id: I1bf79284850353a47ee1fc17797cd667536e17b1 Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* QLocaleBlackberry - fix include statementsRafael Roquetto2013-03-261-3/+3
| | | | | Change-Id: Ifb5678094806e4aab19015d3a600217b4cf9ac5f Reviewed-by: David Faure <david.faure@kdab.com>
* match #ifdefs relating to arm compilationOswald Buddenhagen2013-03-241-1/+1
| | | | | | | | use the same conditional around the #include as the actual code below uses, otherwise we risk mismatches. Change-Id: I8ca32c0178b1970928626a927948b06d4c6d31b9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Mark Q_UNUSED the private members that aren't usedThiago Macieira2013-03-233-0/+3
| | | | | | | | | | | | | | Apple Clang 4.2 has a new warning, letting you know when a private member isn't used by any member function (and, I guess, if the class has no friends): private field 'd' is not used [-Werror,-Wunused-private-field] Qt has a few of those for future expansion. It's not an error for us. Change-Id: Id2edb1159589572f97a07f93181c9c96c5dd983c Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: David Faure <david.faure@kdab.com>
* Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-213-17/+23
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
| * Correct QDate and QTime documentation.Mitch Curtis2013-03-141-6/+2
| | | | | | | | | | | | | | Task-number: QTBUG-30055 Change-Id: I94c8e023f5e3d23ff2f1c74d0763b1c825deb3d1 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * Correct QString's warnings involving QRegularExpression.Mitch Curtis2013-03-121-5/+5
| | | | | | | | | | | | | | | | | | | | Replaces "QRegularExpresssion" with "QRegularExpression" and adds some auto tests for the warning itself. Task-number: QTBUG-30054 Change-Id: Iba333a4388795eccca809fb430c295f503794263 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
| * Revert 6497649730daeab5d3dfac7e806105e99a237656 and clarify docs.Mitch Curtis2013-03-121-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It introduced a regression by requiring that a p/P was also present: QTime time = QTime::currentTime(); qDebug() << time.toString("h:mm:ss a"); // Outputs "10:05:42 am" in Qt 4.8. // Outputs "10:05:42 a" with 6497649730daeab5d3dfac7e806105e99a237656. This patch also clarifies the QTime::toString(QString) documentation. Change-Id: I4d73a959c2ca76304f03a4ce9717b540ad4e8811 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| * Fix static builds with ICUKai Koehne2013-03-121-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | Make sure we actually link against the static version of the ICU libs for static builds. Task-number: QTBUG-29478 Change-Id: Ida7b439f11c5393bee43bfe804f9ec84bf272b34 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | Merge branch 'dev' into stableOswald Buddenhagen2013-03-2096-6668/+10488
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
| * | QLocalePrivate: Add convenience language/script/country to code helpersKonstantin Ritt2013-03-192-14/+18
| | | | | | | | | | | | | | | | | | Change-Id: Id9126a95f1b3a75f510e642ab08c68cefaf3d142 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * | Make sure that we #include qconfig.h before testing for features.Thiago Macieira2013-03-192-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but it's a good idea even in private headers, in case someone includes that header first somewhere. In particular, all platformsupport API is private. Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * | Whitespace cleanup: remove trailing whitespaceAxel Waggershauser2013-03-1616-68/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * | Move Unicode script itemization code from text engine to UnicodeToolsKonstantin Ritt2013-03-143-27/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is still the same trivial implementation with the only difference in that that it properly handles surrogate pairs and combining marks. This temporarily makes QTextEngine::itemize() insignificatly slower due to using intermediate buffer, until refactoring is done. Change-Id: I7987d6306b0b5cdb21b837968e292dd70abfe223 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| * | Inital port of QSystemLocale on BlackBerry 10El Mehdi Fekari2013-03-145-127/+416
| | | | | | | | | | | | | | | Change-Id: Ic177e2867d9fa3dbaec221766964ac28656a2662 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * | Fixed bug in QTimeLine::setPaused(false)Jan Arve Saether2013-03-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was that the elapsed timer was not restarted, causing the currentTime() not being adjusted for the time it was paused. Task-number: QTBUG-30108 Change-Id: Ib9b2c5a0dea52762109e0b25f1068dd7c88e15ba Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| * | Hide Harfbuzz from the outer worldKonstantin Ritt2013-03-133-5/+227
| | | | | | | | | | | | | | | | | | | | | | | | Don't export, don't generate private headers, don't mention HB in API. Change-Id: I048ebd178bf4afaf9fda710a00933b95274cf910 Reviewed-by: Josh Faust <jfaust@suitabletech.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * | interpret format argument of QString::sprintf() as UTF-8Oswald Buddenhagen2013-03-121-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | we expect our source code to be utf-8 throughout, so it doesn't make sense to expect the specifier to be latin-1, as that limits the effective charset to ascii. Change-Id: I22335509ba6c5805d8b264cfd01d7f9a4cf7ef76 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * | QRegularExpression: refactor the handling of the study dataGiuseppe D'Angelo2013-03-121-17/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following situation: - threads A and B have shallow copies of the same QRegularExpression - threads A and B both call match() on a string - thread A calls optimizePattern(), which doesn't optimize - thread B calls optimizePattern(), which does optimize, and sets studyData - thread A uses studyData (set by B) A needs to properly acquire the memory pointed by studyData (which, in turn, needs to be released by B). This commit implements that. (Before, we used to return a copy of the current studyData from optimizePattern(), so A didn't see that B optimized the pattern and set studyData). Change-Id: I9e4741a3d3229905c247491a07099519815680bb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | QVector - removeLast optimizeThorbjørn Martsum2013-03-071-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case somebody uses QVector as a stack, it is not fair to have takeLast, removeLast and pop_back to do way too much work. This is still very slow compared to std::vector::pop_back (mostly due implicit sharing), however it is more than a factor faster than before. Change-Id: I636872675e80c8ca0c8ebc94b04f587a2dcd6d8d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>