aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'v6.2.13-lts' into tqtc/lts-6.2-opensourcev6.2.13-lts-lgpl6.2Tarja Sundqvist2025-08-224-41/+48
|\ | | | | | | | | | | | | | | | | Qt 6.2.13-lts release Conflicts solved: dependencies.yaml Change-Id: I3cbe1ce4293179888e236dd1a3a299cd2c66c950
| * QtQml: Fix some type conversion edge casesUlf Hermann2024-04-261-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | We want to look at the precise type when converting list properties. Otherwise we get a list property without any methods back when converting. Change-Id: I012c0360ef1578c768362d5a4648252d3e6803d8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 37bd19f30102d3e266386e3b81068f2e9cb20425) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit a61222c44714756c058b5407613ac3b95e30e4e2) (cherry picked from commit 5c31551e116c11af2f1f7895f006ce35005b2151)
| * Fix heap-buffer-overflow in ESTable::removeOliver Dawes2024-04-112-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a heap-buffer-overflow issue in ESTable::remove due to an off by one error in the count provided to memmove calls. Pick-to: 5.15 Task-number: QTBUG-123999 Change-Id: I4ee0fbc16ba8936ea921e5f1d1bb267dae0b1d5f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit d3e36454830012e4fd4c538ddeab7cddbfacdc24) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 3241bb2e5e9a4a8c35254fc279d216b6da81780e) (cherry picked from commit 42b8085b50627fa7aa14cd6d5af7ad7fbfce85d0)
| * V4: Don't call methods on nullptrUlf Hermann2024-04-081-18/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The root node of a sparse array can be null. Pick-to: 5.15 Fixes: QTBUG-123596 Change-Id: I5ea7fd73aeec460082d0cf19c7fc8a01993ed1f9 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit e221e1e942f58750af0a93232354a2ad35c74bcf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 590db8ac18f92c594ff7dbf4b4c020aaec546c44) (cherry picked from commit 08a318b3dc377a0a6fea88332ceebf166ac741f1)
* | Merge tag 'v6.2.12-lts' into tqtc/lts-6.2-opensourcev6.2.12-lts-lgplTarja Sundqvist2025-01-292-5/+6
|\| | | | | | | | | | | | | | | | | Qt 6.2.12-lts release Conflicts solved: dependencies.yaml Change-Id: Ia7410afbc9d94f061fb13da84b6361428725b530
| * QtQml: Clear context objects more thoroughly on destructionUlf Hermann2024-02-051-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same object can be the context object of a hierarchy of contexts. So far we would only clear one of them, leaving dangling pointers in the others. Clear all the contexts. Pick-to: 5.15 Fixes: QTBUG-119326 Change-Id: I509f257672813866e3736b51f430f1243a8577f0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 27ba69af2f64a8b194655c9fbb276ce981075f75) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 833f4f6913835a18c37b02bd4784d62cbb4d0701) (cherry picked from commit 477c3c3c25d478caa5b833a9c64f3945b3d3a83e) (cherry picked from commit 7318fadc42e462babeca473864d12cfd033ffa42)
| * setInternalClass: Correctly handle deleted propertiesFabian Kosmale2024-02-051-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an IC was rebuilt, we must not set members that were deleted, otherwise we'll trigger an assertion. Since the nameMap has to match the data we still allocate memory for such members and fill it with undefined. This could be avoided with some deeper refactoring, but a simple solution is to be preferred because this needs to be picked back all the way to 6.2. Fixes: QTBUG-111729 Change-Id: I730d6b4634d989191434225600a08cf0208e72f8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 642d531e42fb233709155f8c8feb7d429c48db38) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 308f785c7842267a8744381148bd82b21c536033) (cherry picked from commit f17168ef874f05b4ea57088cadcc2d5a8fd2c5a0) (cherry picked from commit 912886afe4d58130eb218342843fe85e15128f17) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* | Merge tag 'v6.2.11-lts' into tqtc/lts-6.2-opensourceTarja Sundqvist2024-11-2210-15/+74
|\| | | | | | | | | | | | | | | | | Qt 6.2.11-lts release Conflicts solved: dependencies.yaml Change-Id: I088fe99748b323fbdf49c3766c262eb2a05131d9
| * QtQml: Fix some problems with deep aliasesUlf Hermann2023-11-162-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot get the property cache for an inline component the usual way during type compilation. We have to ask the compilation unit for it. This will usually not work in 6.6 or earlier since the compilation unit does not know the IC's metatypes. However, it shouldn't crash. Guard against still not being able to retrieve the property cache for any reason. Abort the compilation rather than crashing. Also, unify the setting of property attributes. Those should really work the same way everywhere. Finally, disallow writing aliases to value type properties where the property holding the value type itself is not writable. Task-number: QTBUG-115579 Change-Id: I029eb56a9a390085d0c696a787a64c48acf0d620 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 3ea55bf398412d373daab9c92b1498f45de70e96) (cherry picked from commit 7326d41bef7c0ba362e66f9b3668b81d3e74716a) (cherry picked from commit dc4bd4fb3f98967f65dc510e5d42831e1cd3b4f1)
| * QtQml: Clear the whole lookup in storeNameSloppy()Ulf Hermann2023-11-041-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | The clear() method was only use by storeNameSloppy() for the temporary lookup. It only cleared part of the lookup. Drop it and do the memset() directly. Change-Id: Ib31be1d6fba09d2c86f3c4cd64626ab1fd90eb7f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit bf0faf69e1e024118983a6763eb9bca2070564fc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit f520f57477c5fdf3d5c357fce027afae0dae2cfd) (cherry picked from commit f6fb808324a5eea20e09e282d4fa852b7747ab3e)
| * QML Debugger: Don't crash when looking up values from imported modulesUlf Hermann2023-10-254-11/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot look up the imports from other modules because those are stored in the CU. But we can avoid the crash. Pick-to: 5.15 Fixes: QTBUG-117479 Change-Id: Ib5660c94dfb7ed20baedf7f71b2f175e6be042b1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 604da0a395840d7370cde1a55db460156c3a3e8c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 5e34cf725637e91dbe5a7f81f51ceba23ffe435d) (cherry picked from commit 4365e9ee2fc5b510b545772bf5a14f122467682d)
| * QtQml: Correctly convert to QQmlListProperty<QObject>Ulf Hermann2023-10-251-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | If we have a QQmlListWrapper, we can extract its property. Fixes: QTBUG-117829 Change-Id: I46ae8db1aabf7c1b617a22f371ce4f060cf4bb38 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit bb698b7f2e974a23b688dd15393f6a550448a5a8) (cherry picked from commit 20fd12d7f569f8a4a6dfc6c7f0d5f270f4683e90) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 18acf22095bcf4ca8c735ed948fa8637d0619e9c)
| * QML diskcache: Verify cache file sizeFabian Kosmale2023-10-072-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't rely on the checksum verification, as we still assume that we can read all bytes in the range claimed by the unit's header. If for some reason the cache file has been truncated, that will lead to crashes due to out-of-bound reads. As we already store the unit's size in the header, use it for an initial verification before doing any further work. Initial test case was provided by Harald Sitter <sitter@kde.org>. Pick-to: 5.15 Fixes: QTBUG-117130 Change-Id: Idd20191ed0e0ef9c37985c4c64124578f0607ad3 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 7a3db863f4edda12a8dda36b807ef64e98f2046f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b47065e311994440cf2b9804690fac26ebdb17f4) (cherry picked from commit fcbadf4e9936eeaf0591e2f1853e1e198a04bcd2)
* | Merge tag 'v6.2.10-lts' into tqtc/lts-6.2-opensourcev6.2.10-lts-lgplTarja Sundqvist2024-10-0411-102/+219
|\| | | | | | | | | | | | | | | | | Qt 6.2.10-lts release Conflicts solved: dependencies.yaml Change-Id: Ibdf006fa08cddc80ad30fb9ce1089305729d4ece
| * Engine: Fix handling of attached objects in function callsFabian Kosmale2023-09-121-4/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we use an attached object as an argument to a function call, we need to properly extract it from the QmlTypeWrapper. Before this change, we simpley left the argument pointer as null, which lead to subsequent crashes when it got dereferenced. Moreover, treat passing namespaces to functions expecting a QObject as a TypeError, by returning false from CallArgument::fromValue (used to crash for the same reason as with the attached object case). Fixes: QTBUG-106119 Change-Id: Ifa6a32e20a29935aff1f265eb0edd3e35ea1c11b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 84483bff4f4d49e5f87abf564021647f2fb2a8d0) Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
| * Context properties: Don't trigger an assert for numeric namesFabian Kosmale2023-09-094-13/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic in our IdentifierHash assumes that every entry is a StringOrSymbol; however, IdentifierTable::asProperyKey will convert keys that look like numbers to ArrayIndex instead. This is noramlly what we want, and not an issue, except for setContextPropery where the user can pass an arbitrary string that is not necessarily a valid identifier. In an ideal world, we would just disallow such identifiers, but for backward compatibility change the code to handle this case (avoiding a Qt internal assert). We only need to modify the QString overloads, as those are the only ones that interact with unsanitized user input. A later commit will modify setContextPropery to warn if the key is numeric. Fixes: QTBUG-115319 Change-Id: Ifc4e4d2bc99321836e6976c4cbd0c5ff687b430c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit b2b90c7cf5cb5205f2c5b374f7332252205385e8) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
| * QV4::QObjectWrapper: Use the object's actual meta typeKai Uwe Broulik2023-09-091-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, a derived type's methods will not be found. In our particular case we tried to call a method of 'B*' on a QML attached property declared as 'A*'. This restores the previous behavior of using the object() for the meta type except for when it's a value type wrapper. Amends commit 63b622d5908ec2960ce5dfa301e9d3fd4d92fdb4. Change-Id: I08b9f4b97a58c15fdc3703dd3c5d927cd1beb3ce Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 139d45c062ce6061b96f7ffe206babde4b596a98)
| * QJSEngine: Fix potential JS stack overflow cauased by spread operatorFabian Kosmale2023-08-301-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | createSpreadArguments could in theory allocate a (nearly) unbounded number of QV4::Values. Avoid this by checking whether we approach jsStackTop. This fixes CVE-2022-43591. Change-Id: I01aecb979da47b7261688c9f185dc33a50a579a5 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 6511aa4344c1d47ede8546540fe70bdff8523545) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * QtQml: Reset context object when destroying it from QObjectWrapperUlf Hermann2023-08-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | There may be other objects that still hold on to the context data. We should not leave them with a dangling context obejct. Fixes: QTBUG-116228 Change-Id: I3dddd20b13956408d0e66c3a46e59377e45d91e5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 1d3385e9887e912a79835c7defc878edf4ab7ec5)
| * QML: Unify treatment of wrappers when dealing with QObjectMethodUlf Hermann2023-07-263-57/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A method can belong to a QObjectWrapper, a QQmlValueTypeWrapper, or a QQmlTypeWrapper. store only one wrapper pointer and allow for all variants. Furthermore, keep a reference to the wrapper so that it doesn't get garbage collected. We still need it to retrieve the metaobject, even if we're calling the method on a different instance. Fixes: QTBUG-115115 Change-Id: I1759fb687918ff79829fef776e0a93d29373b30f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 63b622d5908ec2960ce5dfa301e9d3fd4d92fdb4)
| * QV4::ArrayData: Fix offset calculation for sort()Ulf Hermann2023-07-261-5/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | We cannot just sort the raw values. We have to take the offset into account. If the array wraps around the end of the allocation, we have to move it around to be contiguous. Fixes: QTBUG-58718 Change-Id: I1866b3f271d97352e250d687955af3fc54340334 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit f0b2fbcf47f00071a7f5f1a04258d451badcb81a)
| * V4: Use memmove() for tail callsUlf Hermann2023-07-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | If you have many arguments, the argument ranges can overlap. In that case memcpy is UB. Fixes: QTBUG-115320 Change-Id: I54dd4d7762e7278502954b8ac2cb4af1197ce88c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit d4a6673d2e66d7f0e26cb8a4265adfc5c0ef0577) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * QML: Export de-inlined functions in ObjectWrapperOlivier De Cannière2023-07-181-2/+2
| | | | | | | | | | | | | | | | | | | | Amends 63b622d5908ec2960ce5dfa301e9d3fd4d92fdb4 Change-Id: I61a37fb9b66eef7f141f1f110c7688c660baff93 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b460361c4cab20ec2e2db7a5c974ebf17f62068d) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
| * QML: Check result when constructing object from metaobjectUlf Hermann2023-07-101-3/+5
| | | | | | | | | | | | | | | | | | | | | | If you pass insufficient arguments to call the ctor, the resulting object is null and cannot be used. Fixes: QTBUG-114910 Change-Id: Ib184684b6a7665bcdc1a3fe8f8a2401a33a8ac1c Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 3110117bfaa36c5363bfa46cd82b01ff6723dd8d)
| * QML: Allow conversion of symbols to QVariantUlf Hermann2023-06-212-17/+36
| | | | | | | | | | | | | | | | | | | | | | We produce their descriptiveString or simply a QVariant containing a QJSValue, depending on whether we're supposed to convert objects without equivalent C++ type or not. Fixes: QTBUG-113854 Change-Id: I22b6038c936d860fdd8aa227f9dfe704e3265a77 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8c451bba7aa6474c8aaec01b8fb02201e0237835)
* | Merge remote-tracking branch 'origin/tqtc/lts-6.2.8' into ↵Tarja Sundqvist2024-02-206-4/+28
|\| | | | | | | | | | | | | | | | | tqtc/lts-6.2-opensource Conflicts solved in a file: dependencies.yaml Change-Id: Ib4083daa41a689b937d2aeb522e93e3aab0be1c4
| * QtQml: Fix coercion of undefined to float and doubleUlf Hermann2023-02-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It should result in NaN, not in 0. [ChangeLog][QtQml][Important Behavior Changes] Converting a JavaScript value to a double or float now always assumes JavaScript type coercion semantics. In particular, converting a value that is not actually a number now results in NaN where it previously sometimes resulted in 0. Fixes: QTBUG-111179 Change-Id: If24444ae9014c8972761c565a6920f06699e485c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b9834e0ee9f086add6dd8a42e5cb40f87f91756b)
| * QML: Invalidate any existing cache files when saving a CU to diskUlf Hermann2023-02-113-2/+20
| | | | | | | | | | | | | | | | | | | | | | Otherwise we just re-load the old cache file next time. That's clearly not intended. Fixes: QTBUG-111078 Change-Id: Ia65b46880eca2b6e8c4792a09f20716125beada3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0a5eff09203ebb2547431de689d9c07e6c97f636) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * qv4qobjectwrapper: return false on failed argument conversionSami Shalayel2022-12-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was possible to call c++-methods (either invokable or as slot) with wrong arguments, which caused a crash. The reason was that CallMethod(...) converted something to a QObject without checking if it was an actual QObject. The wrongly typed argument would end up reinterpret_cast'ed into another type for the call, which leads to segmentation fault when accessing the argument in the function. Added a test where an int tried to be reinterpret-cast'ed into a QFont. Fixes: QTBUG-108994 Change-Id: I8c45c9124411ad3fd100faed0b03390843f7d034 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit cda417cf03694256a84b4abe77de0f5f49ebdf32)
| * QV4::Heap::SharedArrayBuffer: avoid std::aligned_storage (deprecated in C++23)Marc Mutz2022-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by rolling our own. Qt 5.15 uses a pointer (additional indirection), not aligned_storage, so isn't affected. References: - https://github.com/cplusplus/papers/issues/197 - https://wg21.link/p1413 Manual conflict resolutions: - adapted to different member names and private/public access in the 6.2 class vis-a-vis the 6.4+ version. Task-number: QTBUG-99122 Change-Id: Ia116dc11336901a19fc227fb68ac266c1bfbbcb1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 6e9a9ed121ce101d19e015de03b8f1d37fa84041) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* | Merge remote-tracking branch 'origin/tqtc/lts-6.2.7' into ↵Tarja Sundqvist2023-10-035-12/+36
|\| | | | | | | | | | | tqtc/lts-6.2-opensource Change-Id: Ib72ded968b7ac6b75b499392162e3cf3b761ec48
| * QV4: Avoid memory corruption in Reflect.applyFabian Kosmale2022-11-144-9/+27
| | | | | | | | | | | | | | | | | | | | | | | | This extracts the check from Function.prototype.apply into a shared function, and uses it in Reflect.apply, which has the same issue. Task-number: QTBUG-107619 Change-Id: I899464c86554f9bbb5270a95bbe3fe27531e9a27 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 0e963a53c04b0dbe172cfb495b4d62dc8e2f31a3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * QML: Check for stack overflows when creating objectsUlf Hermann2022-11-142-3/+9
| | | | | | | | | | | | | | | | Fixes: QTBUG-106875 Change-Id: I3b0abda6948b79a9e3cf263f27885037fff1804c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit edc01fbfa430d6f0ce66f1871ab28e0f691ee252)
* | Merge remote-tracking branch 'origin/tqtc/lts-6.2.6' into ↵Tarja Sundqvist2023-03-0112-81/+260
|\| | | | | | | | | | | tqtc/lts-6.2-opensource Change-Id: Ie5a87ae61d8ed0429225353ad46e5232d60f4daa
| * V4: Account for the guard pages when allocating stack spaceUlf Hermann2022-09-121-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we've assumed the whole allocation can be used, even though the first and the last page are actually not usable. This makes a difference when the size of the guard pages grows, such as on macOS, which these days has 16k pages. Add the extra guard page size to the amount of memory to be allocated in order to fix the calculation. Fixes: QTBUG-93188 Change-Id: I0ebece94449da3127e9a78a19d8a22722ad8d698 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 826b77c8cf0ffbef4f95e7b9e72eb9dc25936657)
| * JSON: Properly handle bad objects in JSON.stringify()Ulf Hermann2022-08-232-6/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For objects with circular structures we generate a proper error message and fail earlier. For objects with excessive recursion we throw a range error rather than crashing. This behavior is modeled after node's behavior in such circumstances. We use the existing stack overflow detection to determine when to throw the range error. Testing shows that on windows the limit was insufficient. Lower it. Fixes: QTBUG-92192 Change-Id: I25dd302f65f359111e42492df3c71549c4ed7157 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit af1ef35fa00a466d3af04c17b59fcb4ea38f396a) Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * V4: Mark InternalClass parents when running GCUlf Hermann2022-08-037-64/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to preserve them as they notify us about protoId related changes. In order to avoid wasting heap space in case many properties are added and removed from the same object, we put a mechanism in place to rebuild the InternalClass hierarchy if many redundant transitions are detected. Amends commit 69d76d59cec0dcff4c52eef24e779fbef14beeca. Fixes: QTBUG-91687 Task-number: QTBUG-58559 Change-Id: I3238931b5919ed2b98059e0b7f928334284ce7bf Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0b9fa18dfefc06f542bd0c98b7e41fa14aa0c2cf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * V4: Allow conversion from string to QByteArray when setting bindablesUlf Hermann2022-07-281-0/+2
| | | | | | | | | | | | | | | | | | We allow it everywhere else, too. Fixes: QTBUG-105044 Change-Id: I714e5d501a780310791523c5f35a87681c69b1fb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 00e95e35061c169237402af4b017e70175a881db)
| * Qml: When cloning a stack frame, also clone its instruction pointerUlf Hermann2022-07-252-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | Otherwise we get an out of range access when looking for the line number. To be extra safe, we also add another guard against this to the lineNumber() function. Fixes: QTBUG-90466 Change-Id: I4d9cb52ecba2631696537f02a3c1b75c3658ceb8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c02b0e529a3266cce2f7d852deca7774402b236e)
| * Qml: includemocsMarc Mutz2022-07-212-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Including moc files directly into their classes' TU tends to improve codegen and enables extended compiler warnings, e.g. about unused private functions or fields. Manual conflict resolutions: - dropped all includes into non-existing files Task-number: QTBUG-102948 Change-Id: Ie39c60a19ba562affe6bd52ba68b38db95298cf3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 26992a29c6ec1697fe6cec3379b37d1c9b203947)
* | Revert "Update commercial license headers"Tarja Sundqvist2022-11-24147-3163/+3163
|/ | | | | | | | | | | This reverts commit 74089697cf2a4961fb697100555b17ae2342d734. Revert of commercial license headers is required for the Qt 6.2.x opensource releases, Qt 6.2.5 onwards. Task-number: QTBUG-107760 Change-Id: Id49069cb5e5f261da185fd082dfb71deb259d387 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QML: Take care of QVariant when converting function argumentsUlf Hermann2022-06-161-3/+11
| | | | | | | | | | | | | | | We cannot convert to QVariant using QMetaType::convert(). But we can just construct a QVariant with the desired type and data. This will become an issue once we automatically convert argument types to match the desired type inside the function. As a side effect, also allow declaring "var" arguments to functions. Fixes: QTBUG-104361 Change-Id: Idc14021d8d85d3d09ee7b7f286de91b56ea02bfd Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c8e756e560ce3f0d369df65986e5578e0e963c66)
* QML: Port QV4::CompiledData::Binding to new special integer bitfieldUlf Hermann2022-06-131-1/+1
| | | | | | | Task-number: QTBUG-99545 Change-Id: I9f8bc5fa45c61f77ee95b055a3d8de001da8f8c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 36ebee4e69182f0e44d87691d4740b271e1dcf38)
* QML: Port QV4::CompiledData::Object to new special integer bitfieldUlf Hermann2022-06-131-5/+6
| | | | | | | | Task-number: QTBUG-99545 Change-Id: Ia57a16313e883a8d4dab15c971181440ed1d2214 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 745cce4391a8b6255605cb304d8bc14b11168423)
* QML: Port QV4::CompiledData::Location to new special integer bitfieldUlf Hermann2022-06-133-6/+13
| | | | | | | | Task-number: QTBUG-99545 Change-Id: If0d6f893f2351a4146ddf125be4079b5e312f308 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 893b6ae6e890a2b8fc842d9c9cc64b9b8f34e22f)
* Fix the build with tracing enabledShawn Rutledge2022-06-111-4/+4
| | | | | | | | | | line() and column() are functions to be called, not variables. Task-number: QTBUG-102862 Change-Id: I0d447f1b3723efbcac7180c5253fd1ac2bd295ad Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 2b64cb61ba4993049efe7b6c2608c90a05fcc22c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QML: Port QV4::CompiledData::RegExp to new special integer bitfieldUlf Hermann2022-06-041-2/+2
| | | | | | | | | Task-number: QTBUG-99545 Change-Id: I37be080387bf086d84761b056140cc5a99d161ed Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit da09f7c3d8962b4521189c96adf1ed0e1da3e8dd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QML: Port QV4::CompiledData::Lookup to new special integer bitfieldUlf Hermann2022-06-041-2/+2
| | | | | | | | | Task-number: QTBUG-99545 Change-Id: I8cc6db56642f1cd2d16e80ba5c49ffd7c6fdcd8c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 6d92633f32ff2089b8f0a39e07f0d40bf57d8011) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QML: Port icutils::Node to new special integer bitfieldUlf Hermann2022-06-041-1/+1
| | | | | | | | Change-Id: I46f4f21bda1360d09e2c49a1f04dbe411fb46f7d Task-number: QTBUG-99545 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit eca5dcab020a60a53c0ad1b130cf2873d3feff3e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qv4string: port away from std::aligned_storageMarc Mutz2022-06-041-1/+1
| | | | | | | | | | | | It's deprecated in C++23. Just use an explicitly-aligned char array directly, wrapped in a struct to avoid decays to char*. Task-number: QTBUG-99122 Change-Id: I9b876534502363e40247cde3db315330efa0454b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 299b629651626977f01dfe893980ce01d1f021e8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>