Commit Graph

9750 Commits (35adb74ddd915831789f0175423660f8e898942e)

Author SHA1 Message Date
Ulf Hermann 35adb74ddd Reimplement JSON support on top of Cbor
In turn, deprecate the QJsonDocument methods that deal with JSON binary
data. You should use CBOR for data serialization these days.

[ChangeLog][Deprecation Notice] The binary JSON representation is
deprecated. The CBOR format should be used instead.

Fixes: QTBUG-47629
Change-Id: Ic8b92ea36de87815b12307a9d8b1095f07166db8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-21 19:12:51 +02:00
Qt Forward Merge Bot 84db112fe2 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I69f44ea7254cb2643a00b040bbb46f41b7f76a87
2019-10-19 01:00:45 +02:00
Ulf Hermann a7df98a9a7 QSortFilterProxyModel: Add a cheaper way to find source_sort_column
There are two places where we are only interested in the mapping of
proxy to source sort column, rather than the full mapping. Creating the
full mapping is rather expensive as it iterates all rows and columns and
allocates a large number of objects. Just figuring out the n-th accepted
column can be much cheaper.

Fixes: QTBUG-41659
Change-Id: I7ea914cb695518b4d47cdc3ad67c7786380d8709
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2019-10-18 08:36:36 +02:00
Ulf Hermann c5e9d7e504 Generate metatypes.json for QtCore, QtGui, and QtWidgets
These libraries contain types which are exposed to QML from
qtdeclarative.

Change-Id: Ie0edaef94fcb40074b6f6b2ea1a1c3a77ed3e9a9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-10-17 12:50:35 +02:00
Ulf Hermann 7dd14c6009 Move CBOR debug stream functions into qcborvalue.cpp
Some of them were already there, and this way they continue to function,
even if the cborstream feature is turned off.

Change-Id: I6828d2f525ab0a1437fc940a0fe786f6fa56fd6a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-10-17 12:50:35 +02:00
Samuel Gaist c222a9283d QAbstractItemModel: implement QRegularExpression support for match
This is part of the migration of qtbase from QRexExp to
QRegularExpression.

[ChangeLog][QtCore][QAbstractItemModel] The match() method now
supports the new Qt::RegularExpression match flag value. This
will allow users to use either a string or a fully configured
QRegularExpression when doing searches. In the second case,
the case sensitivity flag will be ignored if passed.

Task-number: QTBUG-72587
Change-Id: I07c8d72a661c48b7f4fcf13ef8e95980bcdcb998
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-10-16 21:53:30 +02:00
Ulf Hermann 85ed676dff Provide a feature for CBOR stream I/O
We need to turn it off in bootstrap code.

Change-Id: I826e49fbc5f6128e56f84b58d29358dd7b0b9dc5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-10-16 12:16:04 +02:00
Qt Forward Merge Bot faab18c65a Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ifd83db69416230175ddc3161f640b612755018fc
2019-10-16 01:00:49 +02:00
Ulf Hermann 06ca5c49e7 Cbor: Avoid QUrl in bootstrap code
QUrl is not available when building qmake. Hopefully we can get rid of
this mess in Qt 6.

Change-Id: Ia234996dd4f27d7f843db227e4cf2db869c92dc1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-15 20:39:32 +02:00
Friedemann Kleint 05a829f923 Win32: Consolidate registry code
Add a RAII class for registry keys and use it throughout
the code base.

Change-Id: I666b2fbb790f83436443101d6bc1e3c0525e78df
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-10-14 20:26:42 +02:00
Lars Knoll d0b83adfe7 Make QJsonObject::iterator a true random access iterator
Amends and fixes 7236721bf8
where the iterator category was changed from bidirectional
to random access without adding all the required functions.

Fixes: QTBUG-57353
Change-Id: I2c96448facb222c8b8f9ad4423cb0dbd1ed098f4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-13 21:35:29 +02:00
Qt Forward Merge Bot 8d8140dffa Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I9953c1ca16862184c2373027e946c482ce8e6f0e
2019-10-13 01:00:43 +02:00
Thiago Macieira 7fbadeddc1 Fix infinite recursion caused by the RDSEED feature
We made qRandomCpu() call qCpuHasFeature(), which needs to test that
RDRND works and does so by calling qRandomCpu(). So disentangle that by
making sure we don't recurse.

And by making sure that we fill the buffer with RDRND data, not with
RDSEED.

Fixes: QTBUG-79162
Change-Id: Ib5d667bf77a740c28d2efffd15cc583a9afcb97a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-11 10:55:52 -07:00
Eirik Aavitsland c54083ff93 Fix QEasingCurve possible imprecision at endpoints
Both the spline curves and (most of) the predefines curves are defined
as having start value 0.0 and end value 1.0. The spline and In/OutBack
functions would sometimes not produce that result precisely, so code
could not reliably depend on expressions like (easedValue < 1.0)
becoming false. Fix by explicitly handling endpoints.

Fixes: QTBUG-76781
Fixes: QTBUG-72630
Change-Id: I21be43af469a76c090154bffef8406a9baf2d0b1
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-10-11 12:29:27 +02:00
Edward Welbourne 60deb69034 Distinguish invalid datetimes from others
A default-constructed QDateTime is invalid, but compared equal to a
valid one referencing the start of 1970.  This lead to date properties
in QML being initialized invalid but not getting an onChange if the
first value they're set to is the start of 1970.

Fixing that then lead to some tests failing. Indeed, the original
equality check involved using toMSecsSinceEpoch(), whose value is
undefined unless the datetime is valid, without a prior check on its
validity: so ensure all uses of toMSecsSinceEpoch() are guarded with
isValid() checks.

Reworked tst_QDateTime::toSecsSinceEpoch() to use its bool column
(previously unused, after separating from toTime_t(), which uses this
column for "out of time_t's range") for validity of the datetime.

[ChangeLog][QtCore][QDateTime] Invalid datetimes are now treated as
equal and less than all valid ones. They could previously be found
equal to valid datetimes.

Fixes: QTBUG-79006
Change-Id: Ie72deb8af4350a5e808144d0f6e42dc8eb3ff5ef
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-11 11:59:41 +02:00
Giuseppe D'Angelo f67481094f QObject: use delegate constructors
Avoid the massive code duplication in the two QObject constructors. The
only slight difference is the code path checking for isWidget; I'd say
that paying for that one is worth the price of de-duplicating.

Change-Id: I3af749738fe7d6b7adf287009d1815396a2f1407
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-10-11 06:52:01 +02:00
Lars Knoll f60b9df73d Deprecate reverse iteration on QSet
std::unordered_set only supports forward iteration for good
reasons. Align our API with this by deprecating reverse
iteration and the operator+/-() for iterators.

[ChangeLog][QtCore][QSet] Reverse iteration over QSet is now
deprecated.

Change-Id: Ia6e3346a6474c454c63010d855850ae4ff12e1a4
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-10-10 19:46:10 +02:00
Lars Knoll ebf695bc77 Deprecate calling QList::insert/removeAt with out of bounds index
Users should not call any QList API with indices that are out of
bounds. Deprecate this behavior and make sure users get warnings
in debug mode and assertions if they disable deprecated functionality.

[ChangeLog][Important Behavior Changes] Calling QList::insert() or removeAt()
with an out of bounds index is deprecated and will not be supported in Qt 6
anymore.

Change-Id: I97adecc2e2aabd36ea2cc69e0895d625f78b32a0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-10-10 19:45:34 +02:00
Lars Knoll 746ab5f16d Remove potential out of bounds accesses to QList
Change-Id: I13431e45ef329921a8846c38047f704a299a1a94
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-10-10 19:45:30 +02:00
Joerg Bornemann a6ece9e88a Fix relocatable prefix for hardware-specific Linux builds
Since Qt 5.3.0 we recommend that Linux distributions place a
SSE2-enabled copy of QtCore in a $PREFIX/lib/sse2 subdirectory (see Qt
5.3.0 changelog for details). Same for other hardware capabilities like
AVX2 and AVX512.

This use case was broken with the introduction of the 'relocatable'
feature, because the prefix is determined from the location of
libQt5Core.so and the relative path from libdir to prefix, which is
baked in at configure time.

We now try to locate the libdir below the prefix, and if that fails try
again in the upper directories.

Fixes: QTBUG-78948
Change-Id: Ieec6e1484974e19335cf08ae0df3ee5c0e316d28
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-10-10 13:26:37 +02:00
Liang Qi 9c84b7786c Merge remote-tracking branch 'origin/5.13' into 5.14
Conflicts:
	src/plugins/platforms/xcb/qxcbscreen.h
	src/src.pro

Change-Id: I4e1981e69a1ddcbe4078ec6ab2a64b0da6a445de
2019-10-10 09:13:49 +02:00
Giuseppe D'Angelo 22891dd897 Explain an usage of volatile
It's to work around QTBUG-45307.

Change-Id: Ib6076223013e5b1ccfa6ec25e2d040daaa2f19dd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2019-10-09 22:39:52 +02:00
Thiago Macieira 780137d585 QRandom: add support for RDSEED
The Intel whitepaer[1] recommends using the RDSEED over RDRAND whenever
present. libstdc++ from GCC 10 will also use it in std::random_device.

[ChangeLog][QtCore][QRandomGenerator] The system() random generator will
now use the RDSEED instruction on x86 processors whenever available as
the first source of random data. It will fall back to RDRAND and then to
the system functions, in that order.

[1] https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide

Change-Id: I907a43cd9a714da288a2fffd15bab176e54e1975
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-10-09 07:31:28 -07:00
Qt Forward Merge Bot 74858dc4af Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I03d82c5bc47908a97e7a908d7e67a7301b28d8cb
2019-10-09 01:00:42 +02:00
Alex Henrie ca81c884f8 Include XDG font locations in QStandardPaths::FontsLocation on Linux
~/.fonts was deprecated in 2012, see
https://wiki.archlinux.org/index.php/Font_configuration#Fontconfig_configuration

Few people keep fonts there anymore.

Change-Id: Ide048e1df2c2db4856a38c574df36663ab684f89
Reviewed-by: David Faure <david.faure@kdab.com>
2019-10-08 12:42:38 -06:00
Giuseppe D'Angelo 1ed9cc2a93 Drop unused code
These defines are never used; maybe a remnant from Qt 4?

Change-Id: Ieb12e629493e5483ca5ab84577569610eceb9417
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2019-10-07 12:20:07 +02:00
Marc Mutz a6ffdbe30c QTextCodec: try to work around an ICC 19 bug
ICC 19 barfs on the TextCodecsMutexLocker class because it doesn't
have a user-provided default ctor:

  ../../corelib/codecs/qtextcodec.cpp(543): error #854: const variable locker requires an initializer -- class TextCodecsMutexLocker has no user-provided default constructor
  [...]

But the class doesn't have members that would delete the
implictly-declared default ctor, so no user-provided default ctor
should be necessary:

The only member is the result of qt_unique_lock(), which is
std::unique_lock, which does have a default ctor.

We conclude that this is a compiler bug, and work around it with the
introduction of a user-provided default ctor.

Fix brace placement as a drive-by.

Fixes: QTBUG-78844
Change-Id: I1f5a326afd68138fbebad506ba9aa1926f1afb85
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-07 08:18:53 +02:00
Qt Forward Merge Bot 327b305e95 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I554a2762890391b3b6013c8b82211a8386a4ced8
2019-10-05 01:01:06 +02:00
Friedemann Kleint a2e718a71a QSysInfo::prettyProductName(): Fix up dc042c6dee
- Fix indentation
- Fix empty name returned for WinRT.
- Remove duplicated string "Version" for Windows 10

Change-Id: Ia093006a6f8d8c88257d6b4e31afa37510dc6037
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-10-04 16:30:01 +02:00
Edward Welbourne 0118e2e915 Include likely-adjusted uiLanguages for the system locale
QLocale::uiLanguages() on the system locale uses whatever the system
locale's query(QSystemLocale::UILanguages,...) returns. On Android,
this is just a list of locales. However, for non-system locales, we
also include some results of removing likely sub-tags from the locale
name, where equivalent. Thus zh-CN would also get zh and zh-Hans-CN
added to it; however, if the system locale is zh-Hans-CN, the shorter
forms are omitted. So post-process the system locale list in the same
way, albeit tweaked to avoid duplicates and rearranged so that we can
insert likely-adjusted entries between what they adjust and what
followed it.

Added QLocalePrivate::rawName() in the process, since it looks likely
to be useful in other contexts (and I needed its value): it just joins
such tags as are non-Any. This, however, uses QByteArrayList, so added
that (it's small) to the bootstrap library and qmake.

This follows up on commit 8796e3016f.

[ChangeLog][QtCore][QLocale] The system locale's UI languages list now
includes, as for that of an ordinary locale, the results of adding
likely sub-tags from each locale name, and of removing some, where
this doesn't change which locale is specified. This gives searches for
translation files a better chance of finding a suitable file.

Fixes: QTBUG-75413
Change-Id: Iaafd79aac6a0fdd5f44aed16e445e84a2267c9da
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-04 15:16:15 +02:00
Tor Arne Vestbø f21ecb5657 Simplify creating QCFTypes from CFTypeRefs
Instead of forcing the user to cast:

  QCFType<CFFooRef> foo = (CFFooRef)CFFunctionReturningCFTypeRef());

We can do it for them, since we already know the expected type:

  auto foo = QCFType<CFFooRef>(CFFunctionReturningCFTypeRef));

Change-Id: I994d5d6530f220288b4bfd6ab16eae9f159ce3ef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-10-04 15:09:32 +02:00
Tor Arne Vestbø 191eb076a9 Add explicit QDebug stream operator for QCFString
Disambiguates between the QString and CFStringRef overloads.

Change-Id: I55a7121cd7449b4adc081f6bb7e29736e7af4442
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-04 15:09:30 +02:00
Tor Arne Vestbø d1a9815a43 macOS: Add missing export of QDebug stream operator for QMacAutoReleasePool
Change-Id: Id3e140bd91dcbf2683a41cd9ac36ff79b8f365b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-10-04 15:09:28 +02:00
Tor Arne Vestbø d3be61d965 Fix unused function warning for prefixFromQtCoreLibraryHelper
Change-Id: Iedbe0e9363b6bd97071b38aa1d4546777b34139d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-10-04 13:09:24 +00:00
David Faure 91a869671e CMake: generate moc files for headers using Q_NAMESPACE_EXPORT too
Commit f66c1db16c introduced Q_NAMESPACE_EXPORT and cmake automoc
needs to be told to trigger moc creation for headers using that.

The default value for this variable, from cmake's
Modules/CMakeGenericSystem.cmake is
  set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE")
But it makes more sense to set this here than in upstream cmake, anyway,
given that changes to this list happen here in qtbase.

Change-Id: I07c85fd0bb5e03e98df7687a8663e28620e1fdb6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-10-04 15:03:53 +02:00
Kavindra Palaraja 9a9bdebb92 docs: Mark QPair and QLatin1Char as reentrant
Change-Id: I7d37eb13809a6fa4d1c2c74fd8aea35bdf235996
Fixes: QTBUG-78552
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2019-10-04 14:47:59 +02:00
Albert Astals Cid 3afe4a402c Convert a few sizeof(array)/sizeof(element0) fors to range fors
Increases readability

Change-Id: I81ea915517fd2cd6bc2780f37ba8d8097c63f44b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-10-04 09:00:24 +02:00
Qt Forward Merge Bot 3a1613c227 Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I43393cf47675fd6c14972df1221986335c6f493c
2019-10-04 01:01:48 +02:00
Qt Forward Merge Bot 74a33df026 Merge "Merge remote-tracking branch 'origin/5.13' into 5.14" 2019-10-04 01:01:43 +02:00
Qt Forward Merge Bot e9f10dfe8c Merge remote-tracking branch 'origin/5.13' into 5.14
Change-Id: I31c1c469c00016f1bd21ecfab39794df372e56f2
2019-10-04 01:01:31 +02:00
Thiago Macieira 9328058071 Fix crash when running QtCore: Stack is misaligned on x86-64
When our ELF entry point function is started by the kernel, the stack is
aligned at 16 bytes. However, the stack is expected to be off by 8, due
to a preceding CALL instruction which didn't exist. This cauases a crash
further down as the compiler may generate aligned stack access.

Change-Id: I1496b069cc534f1a838dfffd15c9dc4ef9e3869e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-10-03 08:26:51 -07:00
Edward Welbourne d448f2ecb8 Correct handling of -qfloat16(0)
It is finite and normal; it classifies as a zero; and it should not be > qfloat16(0).
Added tests to match.

Change-Id: I7874fb54f622b4cdf28b0894050ad3e75cf5d77c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-10-03 16:30:40 +02:00
Tor Arne Vestbø c9478e90ff Export lcEventDispatcher in private namespace
The category is used outside of QtCore, and needs to be exported
for shared library builds.

Change-Id: I9bba477d37b823146eaec4e1e53197651f09c013
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-10-03 09:11:18 +00:00
Edward Welbourne 2d8b80bb9c QList: make cast from ptrdiff_t to int explicit
Amends ffc2d57223.

Fixes: QTBUG-78235
Change-Id: Ie91d8d71c92bb62e3268847407b7b252c382d700
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-10-02 08:38:31 +00:00
BogDan Vatra fcb78b5000 Android: Fix plugins naming
Android 5 doesn't extract the files from libs folder unless they are prefixed with "lib".
This patch sets a proper name for the plugin which will make gdb happy and it will also
avoid any name clashes.
If we rename the plugins when we copy them, gdb won't find them, therefore it can't load their
symbols.
On Android all the libs are in a single folder, so to make sure we don't have any name clashes,
we are prefixing the plugin name with it's relative path to qt folder (we replace / with _).

Fixes: QTBUG-78616
Change-Id: I7e0e67d65448532769d69f46b1856c029e2cf5cb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-10-01 11:36:24 +03:00
Qt Forward Merge Bot 4e40c54a3c Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I77ba01f09b3dbcaf13cb265a70d9da661c32a61f
2019-10-01 01:01:20 +02:00
Liang Qi 6f9a215cc4 Merge "Merge remote-tracking branch 'origin/5.13' into 5.14" 2019-09-30 20:07:25 +02:00
Edward Welbourne 4bd6cd1992 Featurize support for signaling NaN
One of our compilers for emscripten coerces all signaling NaNs to
quiet ones, so won't do any actual signaling. Anyone relying on them
to do so shall be disappointed, so it's better that they know about it
at compile-time - or, at least, have the ability to find it out.

Put the signaling NaN producers (and remaining (test) code using them)
under the control of a feature that's disabled when numeric_limits
claims double has no signaling NaN. Assume the bootstrap library
doesn't need signaling NaNs. Sadly, until C++20 <bit>, there's no
contexpr way to test that alleged signalling and quiet NaNs are
actually distinct.

Added some auto-tests for signaling NaN, including that it's distinct
from quiet NaN. Any platform on which the last fails should disable
this feature.

Task-number: QTBUG-77967
Change-Id: I57e9d14bfe276732cd313887adc9acc354d88f08
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-09-30 20:05:42 +02:00
Liang Qi 99cdd5fc67 Merge remote-tracking branch 'origin/5.13' into 5.14
Conflicts:
	src/corelib/global/qrandom.cpp
	src/corelib/io/qfileinfo.cpp
	src/corelib/kernel/qeventdispatcher_win.cpp
	src/corelib/kernel/qeventdispatcher_win_p.h
	src/gui/text/qfontdatabase.cpp
	src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
	src/plugins/platforms/windows/qwindowsglcontext.cpp
	src/testlib/qtestcase.cpp

Done-With: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Done-With: Edward Welbourne <edward.welbourne@qt.io>
Change-Id: I4893212471aa24be804c989a581810e2f714545c
2019-09-30 14:43:02 +02:00
Laszlo Agocs 46201f0e82 QVarLengthArray: Avoid int vs. size_t warnings in operator=
Change-Id: I879b62c55e4211d3e4e1a18f6699f26e3f5de1f8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-09-29 00:11:42 +02:00