Commit Graph

3291 Commits

Author SHA1 Message Date
Fabio Alessandrelli 6ff869eda7 [Net] Fix IP address resolution incorrectly locking the main thread.
This seems to be a pretty old bug, older then originally reported (at
least under certain circumstances).

The IP singleton uses a resolve queue so developers can queue hostnames
for resolution in a separate while keeping the main thread unlocked
(address-resolution OS functions are blocking, and could block for a long
time in case of network disruption).

In most places though, the address resolution function was called with
the mutex locked, causing other functions (querying status, queueing
another hostname, ecc) to block until that resolution ended.

This commit ensures that all calls to OS address resolution are done
with the mutex unlocked.
2021-08-03 15:39:48 +02:00
Rémi Verschelde 7be11742b5
VariantParser: Fix uninitialized ResourceParser funcs
They could cause a segfault when parsing values with ID "Resource"
as apparently we never set a valid `func` for it.

Fixes crash part of #42115.

(cherry picked from commit f3aaa713d9)
2021-08-03 09:25:48 +02:00
Haoyu Qiu a9e0a4bd12
Fix missing locale names
(cherry picked from commit 7eec8334d4)
2021-07-20 12:00:53 +02:00
Aaron Franke 752c1451db
[3.x] Allow reading shaders from .gdshader files
(cherry picked from commit 7dc2edc430)
2021-07-20 12:00:16 +02:00
Dipal M Zambare 4d48e33345
Fixes 50428, added missing checks for image lock
(cherry picked from commit b626c57bc7)
2021-07-15 11:56:53 +02:00
Haoyu Qiu c0ab0df9dc
Fix decompression with FastLZ when buffer size is less than 16 bytes
(cherry picked from commit ccf292df38)
2021-07-13 12:20:29 +02:00
Haoyu Qiu 859dba0dd6
Fix unicode invalid skip error in AssetLib
(cherry picked from commit 0caaaf4018)
2021-07-13 12:18:48 +02:00
Nick H 28ea0cf1e2
Add `get_dead_zone()` method to `InputMap`
This commit adds a new method to the `InputMap`, allowing the user to get the value of an action's dead zone as a float.

(cherry picked from commit c6f28ed62b)
2021-07-06 16:29:20 +02:00
Rémi Verschelde 47a0490ff3
LocalVector: Don't error if `from` >= `count`
Vector handles this silently by returning -1, and we should do the same here.
Otherwise we get errors when calling `find()` on e.g. a LocalVector of size 0,
while `find()` is expected to always work (if the parameters are invalid then
it doesn't find anything, so -1).

Fixup to #49925.

(cherry picked from commit 7b7ccf25b6)
2021-07-05 12:18:44 +02:00
Ricard Rovira 7c8bbfadca
Use unused from in local vector find function.
(cherry picked from commit 14d5908057)
2021-06-29 14:48:10 +02:00
Haoyu Qiu e0223edafc
Validates the `p_format` parameter in `Image::create` functions.
(cherry picked from commit 0b7ffd4f68)
2021-06-29 14:02:56 +02:00
Haoyu Qiu c1b2bd6fb6
Save binary ProjectSettings key length properly
(cherry picked from commit 06c0a5f9f2)
2021-06-17 13:25:11 +02:00
Philip Whitfield e583888573
fix url parsing with port numbers
String.get_slice_count is always at least 1 or 2 for bases with a port number.
Before this change the following URL would return ERR_INVALID_PARAMETER ```ws://127.0.0.1:8000/test```

(cherry picked from commit 3d9f29910c)
2021-06-17 13:20:43 +02:00
Rémi Verschelde 089fde5c59
FileAccess: Don't err in `store_buffer` with buffer of size 0
The error check was added for `FileAccessUnix` but it's not an error when both
`p_src` and `p_length` are zero.

Added correct error checks to all implementations to prevent the actual
erroneous case: `p_src` is nullptr but `p_length > 0` (risk of null pointer
indexing).

Fixes #33564.

(cherry picked from commit 01d5c463be)
2021-06-07 22:56:01 +02:00
Marcel Admiraal 3c55a9c210
Fix game controllers ignoring the last listed button
(cherry picked from commit 18825ad4ff)
2021-06-07 22:40:42 +02:00
Paweł Fertyk c680057dad
Return error when decompressing empty buffer
(cherry picked from commit f563cabb4e)
2021-05-31 11:33:34 +02:00
lawnjelly da2f17ae19
BVH - fix stale current_tree in deactivate function
Changes passing of current_tree from a member variable to a function argument, making bugs due to stale state less likely.

Fix a bug in deactivate where current_tree variable was stale. This may have resulted in visual anomalies.

(cherry picked from commit 0a350845d5)
2021-05-31 11:32:04 +02:00
Hugo Locurcio c3f2eb9291
Remove duplicate orientation settings in the iOS export preset
The screen orientation is now sourced from the Project Settings
like it is done for Android already.

(cherry picked from commit 914b5dc525)
2021-05-31 11:27:26 +02:00
Fabio Alessandrelli d5089c4e4e
[Net] Implement String::parse_url for parsing URLs.
Splits the URL into (scheme, host, port, path).
Supports both literal IPv4 and IPv6.
Strip credentials when present (e.g. http://user:pass@example.com/).

Use that function in both HTTPRequest and WebSocketClient.

(cherry picked from commit 3bb40669d5)
2021-05-31 11:14:34 +02:00
Rémi Verschelde 2c99306e20
OS: Better validation of invalid input for get_unix_time_from_datetime
Default missing keys to Unix time 0 (1970-01-01 at 00:00:00 UTC).
Abort if year <= 0, this is not supported by the current algorithm.

Prevents an infinite loop further down.

Fixes #49022.

(cherry picked from commit 62efa30ed2)
2021-05-24 13:39:13 +02:00
Zae f87096ecea
Fix duplicate close files when deconstructing ZipArchive
(cherry picked from commit a65dac3fa7)
2021-05-24 12:58:36 +02:00
Rémi Verschelde 337ef03958
Fix typos with codespell
Using codespell 2.0.0.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
fave
findn
GIRD
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF

$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```

(cherry picked from commit eb78f80f03)
2021-05-20 14:36:39 +02:00
Zae 164fd19bb5
Fix zip file opening twice
(cherry picked from commit f403e62df1)
2021-05-14 13:16:26 +02:00
Rémi Verschelde e6186dad59
Fix crash with user-defined `ResourceFormatLoader.load`
There's still some fishy recursive relationship between `load_interactive` and
`load` which needs to be investigated here, but this patch solves the crash
when returning an error code in user-defined `load`.

Fixes #48463.

(cherry picked from commit bf9f288c7d)
2021-05-09 16:15:09 +02:00
MaxStgs 7e22dfdd05
Add PackedDataContainer data pointer check for non nullable
(cherry picked from commit 94d0c4182b)
2021-05-05 18:35:55 +02:00
Rémi Verschelde 06136d433b
SCons: Add explicit dependencies on thirdparty code in cloned env
Since we clone the environments to build thirdparty code, we don't get an
explicit dependency on the build objects produced by that environment.

So when we update thirdparty code, Godot code using it is not necessarily
rebuilt (I think it is for changed headers, but not for changed .c/.cpp files),
which can lead to an invalid compilation output (linking old Godot .o files
with a newer, potentially ABI breaking version of thirdparty code).

This was only seen as really problematic with bullet updates (leading to
crashes when rebuilding Godot after a bullet update without cleaning .o files),
but it's safer to fix it everywhere, even if it's a LOT of hacky boilerplate.

(cherry picked from commit c7b53c03ae)
(cherry picked from commit e94161dada)
2021-05-04 12:54:34 +02:00
MaxStgs c5332b1d7a
Check PHashTranslation generate p_from is valid
(cherry picked from commit 0bb40df4bb)
2021-05-04 12:54:09 +02:00
kleonc 045b85b6e0
Make posmod use int64_t instead of int
(cherry picked from commit f04a964627)
2021-05-04 12:47:13 +02:00
kleonc 9201ffa9a2
Improve some argument names for core types
(cherry picked from commit 4d7f642fb3)
2021-04-26 11:50:31 +02:00
Rémi Verschelde bcbf7ce3b6
Add type_traits include for `std::is_trivially_destructible`
(cherry picked from commit 3d46f28558)
2021-04-22 17:29:23 +02:00
Rémi Verschelde 1c9203ad68
Object: Make deleted object access raise errors, not warnings
Clarify doc about not decaying to `null` for `free` and `queue_free`.

Part of #45639.
2021-04-20 11:37:39 +02:00
Rémi Verschelde 701fa8a779
Revert "Fix `_File::get_buffer` length always set to p_length"
This reverts commit 9a7e537aac.

Fixes #47971.
2021-04-17 13:07:18 +02:00
Johannes 9a7e537aac
Fix `_File::get_buffer` length always set to p_length
(cherry picked from commit 33d6eccdec)
2021-04-12 00:23:43 +02:00
Daniel Kříž edcb95cede
fix wrong encoding in uri_encode
(cherry picked from commit 13c999d9d7)
2021-04-12 00:23:43 +02:00
jmb462 ce4dec647c
fix crash on null class in ClassDB.get_property() and set_property()
(cherry picked from commit 400843c172)
2021-04-05 12:02:32 +02:00
lawnjelly d67975c1cd BVH - prevent self collisions
I had missed a special case check for userdata of two colliding objects being equal. In this case, collisions should not be reported. This is used in the physics to prevent self intersection in composite objects.
2021-04-04 09:13:58 +01:00
Hein-Pieter van Braam-Stewart ff3099abcf Fix thread_local, tls, ASLR, and DEP with MingW
This commit changes the way Thread::caller_id works. By moving caller_id
to the .cpp file we make sure that the TLS variable doesn't get
relocated twice causing a crash. Since we build with LTO for release
builds (and everyone should be doing that anyway) there is no extra
overhead from the non-static method. We do do an extra bool check now
there but I don't think this will add much in the way of overhead.

This check cannot be avoided if we still want to be able to cache the
thread ID hash, as we had to move the setter because of limitations of
the WinRT platform. The original workaround for this was in #46813 but
this has some unintended consequences. Specifically; threads that never
create a Thread object will always return 0 in Thread::get_caller_id()
which caused a regression. For instance the editor now freezes when
importing large textures. This PR also addresses that.

Additionally we now enable ASLR support when building with MingW, this
includes a workaround for MingW. MingW refuses to create an appropriate
relocation table if no symbols are exported. So we just export the
various main() functions in godot_windows.cpp.

While ASLR support isn't criticial for Godot, previous versions of Godot
just happened to work with a dynamic base 'by accident' and some users
run Godot this way. After the thread change the .tls section now needs
relocations to make this work. By enabling ASLR at build-time we create
these relocations and people who forced ALSR on previously will now get
a working Godot again.

This fixes #47256 and fixes #47219

This is the 3.x version of this PR. For master a different approach is
possible which I will make in the coming days.
2021-03-25 23:20:12 +01:00
Juan Linietsky 24e1ba1298
Add a "keep" import mode to keep files as-is and export them.
(cherry picked from commit 8d64f3bd76)
2021-03-23 15:44:24 +01:00
Alex Hirsch 0b541af8a1
Allow nullptr with zero length in FileAccess get_buffer
fix #47071

(cherry picked from commit c28428fe4d)
2021-03-17 15:17:02 +01:00
Fredia Huya-Kouadio 0eb220eedc
Fix bug causing `project.godot` to be ignored when `project.binary` is missing
(cherry picked from commit 862e2df1a4)
2021-03-17 15:17:02 +01:00
Haoyu Qiu 0a17e96ab2 Fix invalid memory usage when modifying locked image 2021-03-16 13:45:45 +08:00
Alex Hirsch 5a882a659a
Add parameter checkes to FileAccess get_buffer functions
fix #46540

(cherry picked from commit cdf3099c68)
2021-03-14 12:03:22 +01:00
Rémi Verschelde ba174332af
Merge pull request #46939 from abaire/relaxes_gltf_name_sanitization_3.2
Relaxes Node naming constraints in glTF documents to match the Editor.
2021-03-13 14:57:09 +01:00
abaire b032067e42 Relaxes Node naming constraints in glTF documents to match the Editor. 2021-03-12 08:35:50 -08:00
Aitor Cereceto 7e5020b2fa [46188] fix: get unix from datetime when empty dict
(cherry picked from commit 1e820b3d9d)
2021-03-12 10:17:41 +01:00
bruvzg 8feb53e509 Move caller_id init to Thread constructor to fix UWP build.
(cherry picked from commit 741e1cf672)
2021-03-12 10:12:52 +01:00
lawnjelly 20f7037edb Add GLOBAL_DEF_ALIAS and alias for rename of pixel_snap
Having to rename project settings is rare, but when it does occur it can cause user confusion. In order to make compatibility more seamless this PR introduces two new GLOBAL_DEF functions,

GLOBAL_DEF_ALIAS(new_name, old_name, default)
GLOBAL_DEF_ALIAS_RST(new_name, old_name, default)

These are the same as the existing GLOBAL_DEF functions except that if the new setting is not found, it attempts to load from the old setting name. If the old setting is found, it stores it into the new setting, and then calls the regular GLOBAL_DEF functions.
2021-03-09 15:16:24 +00:00
Ev1lbl0w bae4b0c952
Fix negative VRAM values 2021-03-09 09:51:17 +00:00
kobewi e9e0cac3f5 Allow to save override.cfg with ProjectSettings
(cherry picked from commit 156c402f2b)
2021-03-08 17:40:22 +01:00
Rémi Verschelde 118567ca28
Merge pull request #46657 from lawnjelly/revert_snapping
Revert backport of 2D transform and camera snapping options
2021-03-08 14:49:41 +01:00