summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* rename qt_module_config.prf => qt_module.prfOswald Buddenhagen2012-08-081-1/+1
| | | | | | | this is more logical, following the qt_plugin and qt_tool scheme. Change-Id: Ib3b2abec6728cdab260e15128b1cd78e8e6f5d6a Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Clarify how days are counted in QDateTime::daysTo documentation.Mitch Curtis2012-08-082-1/+22
| | | | | | | | | Mention that the days are counted as the amount of times midnight is reached between the start and end date. Task-number: QTBUG-26780 Change-Id: I22ff6c56b748ac968d6991e0be3e10905c0634bd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Q_DECL_NOTHROW: stronger and more widely available version of Q_DECL_NOEXCEPTMarc Mutz2012-08-072-4/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 1adca807 defined Q_DECL_NOEXCEPT to be the same as throw() for the Microsoft compiler. However, the two are not equivalent: - C++11 noexcept is defined to call std::terminate() if a noexcept function nevertheless encounters an exception. - MSVC throw() has essentially undefined behaviour in this situation: http://msdn.microsoft.com/en-us/library/wfa0edys%28v=vs.100%29 "Due to code optimizations that might be performed by the C++ compiler [...] if a function does throw an exception, the program may not execute correctly." So define two macros: 1. Q_DECL_NOEXCEPT/Q_DECL_NOEXCEPT_EXPR always have C++11 behaviour. This is expected to be the more efficient implementation if the function can actually throw. 2. Q_DECL_NOTHROW means that the function gives the nothrow guarantee. It is stronger than noexcept, but not all functions that can be marked Q_DECL_NOEXCEPT can be marked Q_DECL_NOTHROW. In general Q_DECL_NOTHROW functions need to use a try/catch block in order to prevent exceptions from leaving the functions, unless you can proove that none of the operations can throw. For the caller, both macros are equivalent: it can be relied on that no exception leaves the function. Change-Id: I32f822a82e06a31cb71d38db438387aee5ec3334 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* QUrl::idnWhiteList(): add QList::reserve() callMarc Mutz2012-08-071-2/+4
| | | | | | | | Avoids reallocation. Change-Id: I3238574590463596a797d237b066ef60214392a7 Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QtNoDebug: remove special member functionsMarc Mutz2012-08-071-3/+0
| | | | | | | | These are better generated by the compiler. Change-Id: I5afa9fd17997c220622ed0e5990c33e52700840f Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* ifdef drivespec handling in relativeFilePath to windowsOswald Buddenhagen2012-08-071-9/+4
| | | | | | | on unix, the code wouldn't do anything except burning cycles anyway. Change-Id: I1c28b1a7014af93ca70a17e0bd669debad8003c2 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Don't export QAtomicInt, it's all inlineThiago Macieira2012-08-071-1/+1
| | | | | | | | | | | Moreover, exporting it causes the horrible side-effect on Windows (with MSVC) that the compiler will not inline the functions, but instead will place indirect calls to the functions in QtCore DLL, even in release mode. For such a critical piece of code, inlining is necessary. Change-Id: Ib31c12f6bf8dc8ece1b51824716a480559753c24 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Add a T parameter to the memory barrier functions in atomics.Thiago Macieira2012-08-076-39/+49
| | | | | | | | This is so we can insert valgrind (helgrind) annotation macros. They require the actual address of the variable to work. Change-Id: I988f6a46385ad58143c53ad34b6cf0f58be2cdb8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QMessageLogger: mark default ctor as constexpr, tooMarc Mutz2012-08-071-2/+2
| | | | | | Change-Id: I6f92f4a01e43dbe811b11b3e8d9b8a02a31463c5 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Avoid crashes when invalidating a proxy model filter.Stephen Kelly2012-08-071-3/+10
| | | | | | Task-number: QTBUG-26107 Change-Id: I2df7ae6402136570c8469d3251edae6ca8290f1f Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove extra Q_COMPILER_xxx defines from the MSVC section.Thiago Macieira2012-08-061-11/+0
| | | | | | | | Those are defined below, after the list that describes the macros and the papers. Change-Id: I1f2df0e33c84eb17ebbb0147662f560defed182c Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* MSVC's throw() behaviour matches the C++11 noexcept, so use itThiago Macieira2012-08-061-1/+5
| | | | | | | | | | | | This allows code using methods marked Q_DECL_NOEXCEPT to benefit from optimisations before MSVC supports the C++11 keyword. Even MSVC 2012 doesn't have it yet. Using throw() in other compilers is not a good idea because they might actually be implementing the C++ standard -- which is broken. Change-Id: Id07ab4fe40a641583d5285d5abb536998bc419ba Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Optimise QMutexLocker a little: don't call relock() in the constructorThiago Macieira2012-08-061-2/+5
| | | | | | | | | | | | QMutexLocker does not support being passed already-locked mutexes, unless they are recursive mutexes. But in that case, it behaves as if the mutex weren't locked in the first place. Since that's the case, there's no point in testing the low bit to see if it's set or not. It's never going to be. Change-Id: Ie4b81f7e2cca16e6db36f3cb51a5377dbdfc157d Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Make sure codecForLocale returns a valid codec in bootstrap modeJan-Arve Saether2012-08-061-1/+1
| | | | | | | | | This was a regression caused by acbfb4d777474aadd2813614108, causing for instance qdoc to crash. Change-Id: Id8daa19d467c4f1729e5a5a203a388f16ec4a6de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Add missing const qualifier to snippet in QIdentityProxyModel doc.Mitch Curtis2012-08-061-1/+1
| | | | | | | Task-number: QTBUG-26751 Change-Id: Icb1f25dd015bcc62ec7c4c2b26c897649f1bbabb Reviewed-by: Michalina Ziemba <michalina.ziemba@nokia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Fix typos in qdatetime.cpp.Mitch Curtis2012-08-061-8/+8
| | | | | Change-Id: I1c2e3dafcca69590cd7a18fdf65e2c9083ba91b9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Logging: mark qEmergencyOut() noexceptMarc Mutz2012-08-061-1/+1
| | | | | | | | This function is called in OOM situations and when other exceptions are still in flight, so it really shouldn't throw, indeed. Change-Id: I50cda699ffd74f3710c3bafd15af356ff410bc47 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* qdatetime: micro optimization in fmtDateTimehjk2012-08-051-36/+36
| | | | | | | | The function showed up in the profiler when doing heavy logging involving timestamps in Qt Creator. Change-Id: I81c4e22981a5de91df3da6a0f1df2a08552fa71a Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* ICU: lock the mutex before calling an Unlocked functionThiago Macieira2012-08-041-0/+2
| | | | | | | | | | | | | The QIcuCodec::defaultCodecUnlocked function is not thread-safe because it calls codecForNameUnlocked. In turn, that one accesses and even modifies a QHash stored in the QCoreGlobalData singleton, which is what makes it non-threadsafe. In order to call the Unlocked function, we need to lock the mutex first. Change-Id: I915570110229f4c0929986aa26731244317ef6ab Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* ICU: Mark which functions are threadsafe and which ones aren'tThiago Macieira2012-08-043-14/+20
| | | | | | | | | | | | | Mark the thread-safe functions with the \threadsafe doc marker. This includes public API, which should be thread-safe anyway. The thread-unsafe functions are marked "\nonreentrant" already. In addition, I renamed the functions that must be called with locked mutexes to Unlocked, following the convention in other libraries like libdbus-1. Change-Id: Ibd93d1266149767f546c8e82959b73c138008469 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix order of QT_END_NAMESPACE and QT_END_HEADER macrosSergio Ahumada2012-08-031-1/+1
| | | | | Change-Id: I798311bdacaac341210626489410740c130f8724 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* string.h is needed for memcpy()Oswald Buddenhagen2012-08-021-0/+2
| | | | | | | | ... which is used by some template code. apparently, the glibc on my rather recent system removed some implicit includes again. Change-Id: I9f85362e54a42cccc1e743f2b27bcdb6a90162e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some typos in static assert message.Stephen Kelly2012-08-011-1/+1
| | | | | Change-Id: I1abc79d86a4b101e6f32d37a58ac3c7d8cc16237 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QtNetwork: Handle FD_CLOSE on WindowsMartin Petersson2012-08-013-6/+15
| | | | | | | | | | | | | We need to handle FD_CLOSE separately on Windows as this will be sent only once. When we get FD_CLOSE we need to check if there is more data available for reading. It there is this might indicate that there is another FD_READ that we need to handle after the FD_CLOSE. So in this case we will manually create another close event. Task-number: QTBUG-19409 Task-number: QTBUG-25386 Change-Id: Ie19906bc3f64fb6a85a508a5ab12caac5d70ccdb Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* fix a few qdoc command typosJeremy Katz2012-08-011-1/+1
| | | | | Change-Id: I5eb3a6d2bb7939f001f1fcb836660dd46a47c350 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* statemachine: Make states exit order spec-compliantKent Hansen2012-08-011-3/+3
| | | | | | | | | | The SCXML spec states that entry order should be equivalent to "document order" and exit order should be "reverse document order". Since QStateMachine uses child order for the entry order, the exit order should be reverse child order. Change-Id: Ia7b05fdd5c9261ccf202f64f8d23f5c88b20a8c3 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Make sure that the parsing mode reaches QUrlPrivate::setHostThiago Macieira2012-08-012-11/+11
| | | | | | | | | | | | Ensure that the parsing mode is cascaded down from setAuthority and setUrl so that the hostname parsing does not attempt to decode percent-encoded hostnames when it shouldn't. Take the opportunity to also remove the "Boolean Trap" from QUrlPrivate::setHost. Change-Id: Ia64754c4a4900182700b7af1382aea8410abc7e9 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make QUrl::setScheme only parse in strict mode (no decoding)Thiago Macieira2012-08-012-16/+3
| | | | | | | | | | The URI RFC defines schemes as containing only a very restricted set of characters, none of which require encoding, so don't even try. Testing this behaviour in some web browsers indicate that they do not accept percent-encoded schemes either. Change-Id: I692dd20e1aac7e8a1bcb276cb5113b5802393d38 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix QUrl support for empty usernames and passwordsThiago Macieira2012-08-011-1/+1
| | | | | | | | | | | | | | | If the password is empty (but present), the userinfo component of the URL should end in a colon (":"). QUrl already supported that and it was tested (case "password-empty"). If the username is *also* empty but present, the userinfo component is just the colon (":"). Fix support for that case by checking if we stored the presence flag instead of checking the size of the component. Change-Id: Ie224493a997dbf76b2e44dd6d55fd9674ac83c1c Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix handling of encoded NULs (%00) in QUrl::fromPercentEncodingThiago Macieira2012-08-011-1/+2
| | | | | | | | | | | | | QString::fromUtf8, without an explicit size, (currently) defaults to stopping at the first NUL. That means we need to pass an explicit size. Also take the opportunity to test that QUrl::toPercentEncoding also works with the same data. Change-Id: I79362d67afda624b01ca07b0315b611c4aa3fdda Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: David Faure <faure@kde.org>
* Doc: QVarLengthArray::length is new in 5.0Christian Kamm2012-08-011-0/+1
| | | | | Change-Id: I796e67d677309460d79a7a64a6890dfbcfbace69 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use QtCore instead of QtGui for the standardpaths comments to be correctLaszlo Papp2012-08-017-7/+7
| | | | | | | Change-Id: I98004fed565ac9653947ec70a3197b0372abcf2b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: David Faure <faure@kde.org>
* Lazy initialize library pathsHarald Fernengel2012-08-011-7/+4
| | | | | | | | | | For a lot of command line tools, library loading is not required, so don't waste a lot of time computing them. According to callgrind, this makes the QCoreApplication constructor factor 6 faster, and also removes a lot of stat() calls and other file system access. Change-Id: I0211f5303712fa0dcfc4168cce7025283c63c9d1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix compilation: Move qHash(const T &t, uint seed) up.Friedemann Kleint2012-08-011-2/+2
| | | | | | | | | It needs to be visible from qHash(const QPair<T1, T2> &key, uint seed). Change-Id: Ibb63ce6da1e655bfb841c5e580e184ef66c5b766 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix reloading of pluginsLars Knoll2012-08-011-0/+1
| | | | | | | | | Unloading and reloading a plugin didn't work correctly, because we didn't reset instance to 0 on unload. Task-number: QTBUG-26098 Change-Id: Ic3e4497f359b1ca455be949dce9cafa9d67d8039 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some syncqt warnings.Lars Knoll2012-08-013-0/+10
| | | | | Change-Id: I6f432ee991f4bde217fa27d4004ef318f1d480e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Mac: Don't crash if language preferences can't be retrieved.Eike Ziller2012-07-311-1/+1
| | | | | | | | | That can happen when e.g. running an application with sudo. Task-number: QTBUG-26547 Change-Id: Ib16ef7798ebcd1c9b8d661dd2e3ce3aadc393489 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
* Align the CP949 codec name with ICULars Knoll2012-07-312-6/+9
| | | | | | | | It's name is windows-949 according to ICU. Keep CP949 as an alias for compatibility with Qt 4. Change-Id: I115ba2593da6f7b47e25136c3fadb19c7f798ff0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Small doc fixes about the list of supported codecs.Lars Knoll2012-07-311-3/+3
| | | | | Change-Id: I98b8ec9d5de9e69f1bb6187b4d820d61f7ce03e5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do not preload any codecs anymore when using ICULars Knoll2012-07-314-30/+81
| | | | | | | | | When using ICU we can now avoid pre loading any codecs at startup. Instead QTextCodecs will always be created lazily when first asked for. Change-Id: Ic668f2824700896d2eca7d0de54f978404826163 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add a factory method to QIsciiCodec and fix the namesLars Knoll2012-07-312-9/+21
| | | | | | | | | Make the names all lower case to be in line with what ICU reports. Add a factory method to create the codecs according to their name. Change-Id: Ia3dddaa7701a0645d9d8fbcb52f1f8d58f79cf98 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use ICU instead of iconv/windows codecs for the localeLars Knoll2012-07-314-35/+50
| | | | | | | | With ICU there's no need to use the windows locale or iconv codecs anymore as locale codecs. Change-Id: I50c94a97ed6acbf4c6f05b2a88593a57ebfa8342 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make codecForLocale atomicLars Knoll2012-07-312-37/+36
| | | | | Change-Id: I8017b1c2aa1df8d613e83919a945fd5f320713d6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* ICU code page conversion supportLars Knoll2012-07-315-24/+791
| | | | | | | | | | | | | Use ICU to do code page conversion instead of the builtin text codecs. With this QTextCodec simply becomes a wrapper around ICU's ucnv_* methods. We only keep our own codecs for UTF-*, ISO-8859-1, ISO-8859-15 for performance reasons, and for TSCII and iscii-* because they aren't supported by ICU. Change-Id: I4fc49eba55cf772b9772c6dac606a47a44346a60 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Rename some codecs to be in line with ICULars Knoll2012-07-311-2/+2
| | | | | Change-Id: If523d2a12ef64c79e3860da1f430f128d24ff600 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Disable iconv on utf-8 based platformsLars Knoll2012-07-312-4/+5
| | | | | | | | | There's no need to use iconv on Mac, iOS, Android or QNX, as all these platforms are fully utf-8 based. Change-Id: I2a03c8dea72ad91f6ec83da0a838de20e46babef Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Lazily initialize iconv in the iconv codecLars Knoll2012-07-312-4/+12
| | | | | | | | | | | | | | | Avoid dlopen'ing libiconv and initializing it's members until the codec gets used for the first time. This avoids some memory and startup time overhead in case we can use the utf8 codec instead of iconv. It also removes a circular dependency between codec initialization during app startup. Change-Id: I119c010c288dc59ab32279d8a213ae1f4347cace Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use utf-8 as the locale codec where it makes senseLars Knoll2012-07-311-6/+8
| | | | | | | | | Use utf8 as the fallback codec in case we can't determine something else instead of latin1. Also use utf8 for Mac, iOS, Android and QNX. Change-Id: I15dc85d2406b1ebdfacff25f45f8b6854c52b97e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove encoding detection according to LANGLars Knoll2012-07-311-142/+0
| | | | | | | | | This code is left over from the 90's, and should not get used anymore. In all relevant cases we will use UTF-8 or iconv nowadays. Change-Id: Ie3776f671de33f782fa77f6359bf6e105bd9c1b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the text codec list to qcoreglobaldata.Lars Knoll2012-07-314-195/+115
| | | | | | | | | | | This removes some global statics in QTextCodec and makes the code better to maintain in the longer term. Remove QT_NO_THREAD defines around mutexes as this isn't required in Qt 5 anymore. Change-Id: I15ede75f53b16f134f4053f3188c4b47e86fcd8a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>