godot/core
Pedro J. Estébanez d904d05e65 Fix dangling and reassigned Variants
This commit addresses multiple issues with `Variant`s that point to an `Object`
which is later released, when it's tried to be accessed again.

Formerly, **while running on the debugger the system would check if the instance id was
still valid** to print warnings or return special values. Some cases weren't being
warned about whatsoever.

Also, a newly allocated `Object` could happen to be allocated at the same memory
address of an old one, making cases of use hard to find and having **`Variant`s pointing
to the old one magically reassigned to the new**.

This commit makes the engine realize all these situations **under debugging**
so you can detect and fix them. Running without a debugger attached will still
behave as it always did.

Also the warning messages have been extended and made clearer.

All that said, in the name of performance there's still one possible case of undefined
behavior: in multithreaded scripts there would be a race condition between a thread freeing
an `Object` and another one trying to operate on it. The latter may not realize the
`Object` has been freed soon enough. But that's a case of bad scripting that was never
supported anyway.
2020-04-23 13:51:02 +02:00
..
bind Core: Change _Marshall class inherit from Reference to Object 2020-03-04 12:40:14 +01:00
crypto DocData: Skip unexposed classes 2020-04-21 14:15:34 +02:00
io Revert "Made possible to specify where to dump the contents when loading a ".pck" file" 2020-04-20 13:48:02 +02:00
math Remove unnecessary check for zero determinant in Basis::orthonormalize(). 2020-04-16 12:57:22 +02:00
os Merge pull request #36639 from RandomShaper/imvu/improve_drives_ux_3.2 2020-03-17 16:27:33 +01:00
array.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
array.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
class_db.cpp ClassDB: Exclude method binds starting with '_' from API hash 2020-01-07 00:08:49 +01:00
class_db.h Merge pull request #34726 from nekomatata/polygon2d-antialiasing-fix 2020-01-03 14:17:05 +01:00
color_names.inc doc: Document named color constants 2020-01-26 12:08:16 +01:00
color.cpp Color: Fix deprecation warning mentioning 'get_v()' instead of 'v' 2020-01-28 12:41:04 +01:00
color.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
command_queue_mt.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
command_queue_mt.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
compressed_translation.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
compressed_translation.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
core_builders.py Allow system certs file to be used by Editor. 2018-09-15 14:45:54 +02:00
core_string_names.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
core_string_names.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
cowdata.h Ensure COWData does not reallocate on push back, fixes #22561 2020-04-16 11:46:00 +02:00
dictionary.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
dictionary.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
engine.cpp Fix Engine get_target_fps() returning float instead of int. 2020-04-16 12:47:19 +02:00
engine.h Fix Engine get_target_fps() returning float instead of int. 2020-04-16 12:47:19 +02:00
error_list.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
error_macros.cpp Improve and document error macros 2020-01-24 17:19:57 +01:00
error_macros.h Improve and document error macros 2020-01-24 17:19:57 +01:00
func_ref.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
func_ref.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
global_constants.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
global_constants.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
hash_map.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
hashfuncs.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
image.cpp Fix square image resize 2020-04-21 14:11:43 +02:00
image.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
input_map.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
input_map.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
int_types.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
list.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
make_binders.py Fix some code found by Coverity Scan and PVS Studio 2019-07-23 09:14:31 +02:00
map.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
message_queue.cpp Tweak the message queue maximum size property hint 2020-03-25 11:38:53 +01:00
message_queue.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
method_bind.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
method_bind.h Allows to doc vararg method return type as void 2020-01-02 21:37:26 +08:00
method_ptrcall.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
node_path.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
node_path.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
oa_hash_map.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
object_id.h Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
object_rc.h Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
object.cpp Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
object.h Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
ordered_hash_map.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
packed_data_container.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
packed_data_container.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
pair.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
path_remap.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
path_remap.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
pool_allocator.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
pool_allocator.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
pool_vector.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
pool_vector.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
print_string.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
print_string.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
project_settings.cpp Revert "Made possible to specify where to dump the contents when loading a ".pck" file" 2020-04-20 13:48:02 +02:00
project_settings.h Revert "Made possible to specify where to dump the contents when loading a ".pck" file" 2020-04-20 13:48:02 +02:00
ref_ptr.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
ref_ptr.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
reference.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
reference.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
register_core_types.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
register_core_types.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
resource.cpp Merge pull request #34296 from timothyqiu/lock-33072 2020-01-06 14:04:23 +01:00
resource.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
rid.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
rid.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
ring_buffer.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
safe_refcount.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
safe_refcount.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
script_debugger_local.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
script_debugger_local.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
script_language.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
script_language.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
SCsub Update zstd to 1.4.3 2019-11-03 10:37:48 -06:00
self_list.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
set.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
simple_type.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
sort_array.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
string_buffer.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
string_builder.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
string_builder.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
string_name.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
string_name.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
translation.cpp Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
translation.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
type_info.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
typedefs.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
ucaps.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
undo_redo.cpp Allows to doc vararg method return type as void 2020-01-02 21:37:26 +08:00
undo_redo.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
ustring.cpp Fixed String::humanize_size crash. 2020-02-14 15:59:12 +01:00
ustring.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
variant_call.cpp Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
variant_op.cpp Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
variant_parser.cpp Read and write exported infs/nans correctly (#35388) 2020-03-25 11:38:54 +01:00
variant_parser.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
variant.cpp Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
variant.h Fix dangling and reassigned Variants 2020-04-23 13:51:02 +02:00
vector.h Merge pull request #34618 from qarmin/vector_please_dont_crash 2020-01-02 15:44:41 +01:00
version.h PCK: Set VERSION_PATCH in header, factor out header magic 2020-01-06 13:13:17 +01:00
vmap.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00
vset.h Update copyright statements to 2020 2020-01-01 11:16:22 +01:00