diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/array.cpp | 2 | ||||
-rw-r--r-- | core/compressed_translation.cpp | 2 | ||||
-rw-r--r-- | core/error_macros.cpp | 2 | ||||
-rw-r--r-- | core/io/file_access_buffered_fa.h | 4 | ||||
-rw-r--r-- | core/io/file_access_compressed.cpp | 24 | ||||
-rw-r--r-- | core/io/file_access_encrypted.cpp | 12 | ||||
-rw-r--r-- | core/io/file_access_network.cpp | 6 | ||||
-rw-r--r-- | core/io/stream_peer.cpp | 6 | ||||
-rw-r--r-- | core/object.cpp | 11 | ||||
-rw-r--r-- | core/os/file_access.cpp | 2 | ||||
-rw-r--r-- | core/os/input_event.cpp | 24 | ||||
-rw-r--r-- | core/os/input_event.h | 9 | ||||
-rw-r--r-- | core/os/os.cpp | 22 | ||||
-rw-r--r-- | core/os/os.h | 2 | ||||
-rw-r--r-- | core/project_settings.cpp | 5 | ||||
-rw-r--r-- | core/register_core_types.cpp | 3 | ||||
-rw-r--r-- | core/script_debugger_local.cpp | 4 | ||||
-rw-r--r-- | core/script_debugger_remote.cpp | 2 | ||||
-rw-r--r-- | core/string_buffer.cpp | 2 | ||||
-rw-r--r-- | core/string_buffer.h | 2 | ||||
-rw-r--r-- | core/ustring.cpp | 4 | ||||
-rw-r--r-- | core/variant_call.cpp | 2 | ||||
-rw-r--r-- | core/vector.h | 4 |
23 files changed, 104 insertions, 52 deletions
diff --git a/core/array.cpp b/core/array.cpp index b7d4ae413a..1ccbbae147 100644 --- a/core/array.cpp +++ b/core/array.cpp @@ -261,7 +261,7 @@ Array &Array::sort_custom(Object *p_obj, const StringName &p_function) { SortArray<Variant, _ArrayVariantSortCustom> avs; avs.compare.obj = p_obj; avs.compare.func = p_function; - avs.sort(_p->array.ptr(), _p->array.size()); + avs.sort(_p->array.ptrw(), _p->array.size()); return *this; } diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp index 74565d2e32..5c7b793590 100644 --- a/core/compressed_translation.cpp +++ b/core/compressed_translation.cpp @@ -288,7 +288,7 @@ StringName PHashTranslation::get_message(const StringName &p_src_text) const { CharString uncomp; uncomp.resize(bucket.elem[idx].uncomp_size + 1); - smaz_decompress(&sptr[bucket.elem[idx].str_offset], bucket.elem[idx].comp_size, uncomp.ptr(), bucket.elem[idx].uncomp_size); + smaz_decompress(&sptr[bucket.elem[idx].str_offset], bucket.elem[idx].comp_size, uncomp.ptrw(), bucket.elem[idx].uncomp_size); String rstr; rstr.parse_utf8(uncomp.get_data()); //print_line("Compressed, size: "+itos(bucket.elem[idx].comp_size)); diff --git a/core/error_macros.cpp b/core/error_macros.cpp index 7d85aa9001..a942b1dd2d 100644 --- a/core/error_macros.cpp +++ b/core/error_macros.cpp @@ -101,6 +101,6 @@ void _err_print_error(const char *p_function, const char *p_file, int p_line, co void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, bool fatal) { String fstr(fatal ? "FATAL: " : ""); - String err(fstr + "Index" + p_index_str + "=" + itos(p_index) + " out of size (" + p_size_str + "=" + itos(p_size) + ")"); + String err(fstr + "Index " + p_index_str + "=" + itos(p_index) + " out of size (" + p_size_str + "=" + itos(p_size) + ")"); _err_print_error(p_function, p_file, p_line, err.utf8().get_data()); } diff --git a/core/io/file_access_buffered_fa.h b/core/io/file_access_buffered_fa.h index 309fc16d09..67751e840f 100644 --- a/core/io/file_access_buffered_fa.h +++ b/core/io/file_access_buffered_fa.h @@ -55,10 +55,10 @@ class FileAccessBufferedFA : public FileAccessBuffered { // on dvector //PoolVector<uint8_t>::Write write = cache.buffer.write(); - //f.get_buffer(write.ptr(), p_size); + //f.get_buffer(write.ptrw(), p_size); // on vector - f.get_buffer(cache.buffer.ptr(), p_size); + f.get_buffer(cache.buffer.ptrw(), p_size); return p_size; }; diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp index 514e3c65f0..c6f31dc8f0 100644 --- a/core/io/file_access_compressed.cpp +++ b/core/io/file_access_compressed.cpp @@ -51,7 +51,7 @@ void FileAccessCompressed::configure(const String &p_magic, Compression::Mode p_ if (write_max > write_buffer_size) { \ write_buffer_size = next_power_of_2(write_max); \ buffer.resize(write_buffer_size); \ - write_ptr = buffer.ptr(); \ + write_ptr = buffer.ptrw(); \ } \ } @@ -76,14 +76,14 @@ Error FileAccessCompressed::open_after_magic(FileAccess *p_base) { comp_buffer.resize(max_bs); buffer.resize(block_size); - read_ptr = buffer.ptr(); - f->get_buffer(comp_buffer.ptr(), read_blocks[0].csize); + read_ptr = buffer.ptrw(); + f->get_buffer(comp_buffer.ptrw(), read_blocks[0].csize); at_end = false; read_eof = false; read_block_count = bc; read_block_size = read_blocks.size() == 1 ? read_total : block_size; - Compression::decompress(buffer.ptr(), read_block_size, comp_buffer.ptr(), read_blocks[0].csize, cmode); + Compression::decompress(buffer.ptrw(), read_block_size, comp_buffer.ptr(), read_blocks[0].csize, cmode); read_block = 0; read_pos = 0; @@ -114,7 +114,7 @@ Error FileAccessCompressed::_open(const String &p_path, int p_mode_flags) { write_buffer_size = 256; buffer.resize(256); write_max = 0; - write_ptr = buffer.ptr(); + write_ptr = buffer.ptrw(); //don't store anything else unless it's done saving! } else { @@ -160,7 +160,7 @@ void FileAccessCompressed::close() { Vector<uint8_t> cblock; cblock.resize(Compression::get_max_compressed_buffer_size(bl, cmode)); - int s = Compression::compress(cblock.ptr(), bp, bl, cmode); + int s = Compression::compress(cblock.ptrw(), bp, bl, cmode); f->store_buffer(cblock.ptr(), s); block_sizes.push_back(s); @@ -211,8 +211,8 @@ void FileAccessCompressed::seek(size_t p_position) { read_block = block_idx; f->seek(read_blocks[read_block].offset); - f->get_buffer(comp_buffer.ptr(), read_blocks[read_block].csize); - Compression::decompress(buffer.ptr(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); + f->get_buffer(comp_buffer.ptrw(), read_blocks[read_block].csize); + Compression::decompress(buffer.ptrw(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); read_block_size = read_block == read_block_count - 1 ? read_total % block_size : block_size; } @@ -282,8 +282,8 @@ uint8_t FileAccessCompressed::get_8() const { if (read_block < read_block_count) { //read another block of compressed data - f->get_buffer(comp_buffer.ptr(), read_blocks[read_block].csize); - Compression::decompress(buffer.ptr(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); + f->get_buffer(comp_buffer.ptrw(), read_blocks[read_block].csize); + Compression::decompress(buffer.ptrw(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); read_block_size = read_block == read_block_count - 1 ? read_total % block_size : block_size; read_pos = 0; @@ -315,8 +315,8 @@ int FileAccessCompressed::get_buffer(uint8_t *p_dst, int p_length) const { if (read_block < read_block_count) { //read another block of compressed data - f->get_buffer(comp_buffer.ptr(), read_blocks[read_block].csize); - Compression::decompress(buffer.ptr(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); + f->get_buffer(comp_buffer.ptrw(), read_blocks[read_block].csize); + Compression::decompress(buffer.ptrw(), read_blocks.size() == 1 ? read_total : block_size, comp_buffer.ptr(), read_blocks[read_block].csize, cmode); read_block_size = read_block == read_block_count - 1 ? read_total % block_size : block_size; read_pos = 0; diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp index e5da307153..71ebf57508 100644 --- a/core/io/file_access_encrypted.cpp +++ b/core/io/file_access_encrypted.cpp @@ -80,11 +80,11 @@ Error FileAccessEncrypted::open_and_parse(FileAccess *p_base, const Vector<uint8 data.resize(ds); - uint32_t blen = p_base->get_buffer(data.ptr(), ds); + uint32_t blen = p_base->get_buffer(data.ptrw(), ds); ERR_FAIL_COND_V(blen != ds, ERR_FILE_CORRUPT); aes256_context ctx; - aes256_init(&ctx, key.ptr()); + aes256_init(&ctx, key.ptrw()); for (size_t i = 0; i < ds; i += 16) { @@ -97,7 +97,7 @@ Error FileAccessEncrypted::open_and_parse(FileAccess *p_base, const Vector<uint8 MD5_CTX md5; MD5Init(&md5); - MD5Update(&md5, data.ptr(), data.size()); + MD5Update(&md5, (uint8_t *)data.ptr(), data.size()); MD5Final(&md5); ERR_FAIL_COND_V(String::md5(md5.digest) != String::md5(md5d), ERR_FILE_CORRUPT); @@ -141,17 +141,17 @@ void FileAccessEncrypted::close() { MD5_CTX md5; MD5Init(&md5); - MD5Update(&md5, data.ptr(), data.size()); + MD5Update(&md5, (uint8_t *)data.ptr(), data.size()); MD5Final(&md5); compressed.resize(len); - zeromem(compressed.ptr(), len); + zeromem(compressed.ptrw(), len); for (int i = 0; i < data.size(); i++) { compressed[i] = data[i]; } aes256_context ctx; - aes256_init(&ctx, key.ptr()); + aes256_init(&ctx, key.ptrw()); for (size_t i = 0; i < len; i += 16) { diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp index a224abd9e7..61a0521cae 100644 --- a/core/io/file_access_network.cpp +++ b/core/io/file_access_network.cpp @@ -147,7 +147,7 @@ void FileAccessNetworkClient::_thread_func() { Vector<uint8_t> block; block.resize(len); - client->get_data(block.ptr(), len); + client->get_data(block.ptrw(), len); if (fa) //may have been queued fa->_set_block(offset, block); @@ -434,12 +434,12 @@ int FileAccessNetwork::get_buffer(uint8_t *p_dst, int p_length) const { _queue_page(page + j); } - buff = pages[page].buffer.ptr(); + buff = pages[page].buffer.ptrw(); //queue pages buffer_mutex->unlock(); } - buff = pages[page].buffer.ptr(); + buff = pages[page].buffer.ptrw(); last_page_buff = buff; last_page = page; } diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp index 2583eb369d..42a258a10d 100644 --- a/core/io/stream_peer.cpp +++ b/core/io/stream_peer.cpp @@ -220,7 +220,7 @@ void StreamPeer::put_var(const Variant &p_variant) { encode_variant(p_variant, NULL, len); buf.resize(len); put_32(len); - encode_variant(p_variant, buf.ptr(), len); + encode_variant(p_variant, buf.ptrw(), len); put_data(buf.ptr(), buf.size()); } @@ -340,7 +340,7 @@ String StreamPeer::get_utf8_string(int p_bytes) { Vector<uint8_t> buf; Error err = buf.resize(p_bytes); ERR_FAIL_COND_V(err != OK, String()); - err = get_data(buf.ptr(), p_bytes); + err = get_data(buf.ptrw(), p_bytes); ERR_FAIL_COND_V(err != OK, String()); String ret; @@ -353,7 +353,7 @@ Variant StreamPeer::get_var() { Vector<uint8_t> var; Error err = var.resize(len); ERR_FAIL_COND_V(err != OK, Variant()); - err = get_data(var.ptr(), len); + err = get_data(var.ptrw(), len); ERR_FAIL_COND_V(err != OK, Variant()); Variant ret; diff --git a/core/object.cpp b/core/object.cpp index 631676d827..1be7337d96 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -818,7 +818,7 @@ Variant Object::callv(const StringName &p_method, const Array &p_args) { } Variant::CallError ce; - return call(p_method, argptrs.ptr(), p_args.size(), ce); + return call(p_method, (const Variant **)argptrs.ptr(), p_args.size(), ce); } Variant Object::call(const StringName &p_name, VARIANT_ARG_DECLARE) { @@ -1183,7 +1183,7 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int bind_mem[p_argcount + j] = &c.binds[j]; } - args = bind_mem.ptr(); + args = (const Variant **)bind_mem.ptr(); argc = bind_mem.size(); } @@ -1749,6 +1749,13 @@ Variant::Type Object::get_static_property_type(const StringName &p_property, boo Variant::Type Object::get_static_property_type_indexed(const Vector<StringName> &p_path, bool *r_valid) const { + if (p_path.size() == 0) { + if (r_valid) + *r_valid = false; + + return Variant::NIL; + } + bool valid = false; Variant::Type t = get_static_property_type(p_path[0], &valid); if (!valid) { diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 5fdd2b9135..7b2062936b 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -481,7 +481,7 @@ Vector<uint8_t> FileAccess::get_file_as_array(const String &p_path) { ERR_FAIL_COND_V(!f, Vector<uint8_t>()); Vector<uint8_t> data; data.resize(f->get_len()); - f->get_buffer(data.ptr(), data.size()); + f->get_buffer(data.ptrw(), data.size()); memdelete(f); return data; } diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp index 3cdd9ae0e0..9b2bd30868 100644 --- a/core/os/input_event.cpp +++ b/core/os/input_event.cpp @@ -939,6 +939,14 @@ void InputEventGesture::set_position(const Vector2 &p_pos) { pos = p_pos; } +void InputEventGesture::_bind_methods() { + + ClassDB::bind_method(D_METHOD("set_position", "position"), &InputEventGesture::set_position); + ClassDB::bind_method(D_METHOD("get_position"), &InputEventGesture::get_position); + + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position"), "set_position", "get_position"); +} + Vector2 InputEventGesture::get_position() const { return pos; @@ -970,6 +978,14 @@ Ref<InputEvent> InputEventMagnifyGesture::xformed_by(const Transform2D &p_xform, return ev; } +void InputEventMagnifyGesture::_bind_methods() { + + ClassDB::bind_method(D_METHOD("set_factor", "factor"), &InputEventMagnifyGesture::set_factor); + ClassDB::bind_method(D_METHOD("get_factor"), &InputEventMagnifyGesture::get_factor); + + ADD_PROPERTY(PropertyInfo(Variant::REAL, "factor"), "set_factor", "get_factor"); +} + InputEventMagnifyGesture::InputEventMagnifyGesture() { factor = 1.0; @@ -1000,6 +1016,14 @@ Ref<InputEvent> InputEventPanGesture::xformed_by(const Transform2D &p_xform, con return ev; } +void InputEventPanGesture::_bind_methods() { + + ClassDB::bind_method(D_METHOD("set_delta", "delta"), &InputEventPanGesture::set_delta); + ClassDB::bind_method(D_METHOD("get_delta"), &InputEventPanGesture::get_delta); + + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "delta"), "set_delta", "get_delta"); +} + InputEventPanGesture::InputEventPanGesture() { delta = Vector2(0, 0); diff --git a/core/os/input_event.h b/core/os/input_event.h index 2cba60bede..614a3289ba 100644 --- a/core/os/input_event.h +++ b/core/os/input_event.h @@ -476,6 +476,9 @@ class InputEventGesture : public InputEventWithModifiers { Vector2 pos; +protected: + static void _bind_methods(); + public: void set_position(const Vector2 &p_pos); Vector2 get_position() const; @@ -486,6 +489,9 @@ class InputEventMagnifyGesture : public InputEventGesture { GDCLASS(InputEventMagnifyGesture, InputEventGesture) real_t factor; +protected: + static void _bind_methods(); + public: void set_factor(real_t p_factor); real_t get_factor() const; @@ -500,6 +506,9 @@ class InputEventPanGesture : public InputEventGesture { GDCLASS(InputEventPanGesture, InputEventGesture) Vector2 delta; +protected: + static void _bind_methods(); + public: void set_delta(const Vector2 &p_delta); Vector2 get_delta() const; diff --git a/core/os/os.cpp b/core/os/os.cpp index a39dfcc003..8088a6fa74 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -279,14 +279,22 @@ String OS::get_locale() const { return "en"; } -// Helper function used by OS_Unix and OS_Windows -String OS::get_safe_application_name() const { - String an = ProjectSettings::get_singleton()->get("application/config/name"); - Vector<String> invalid_char = String("\\ / : * ? \" < > |").split(" "); - for (int i = 0; i < invalid_char.size(); i++) { - an = an.replace(invalid_char[i], "-"); +// Helper function to ensure that a dir name/path will be valid on the OS +String OS::get_safe_dir_name(const String &p_dir_name, bool p_allow_dir_separator) const { + + Vector<String> invalid_chars = String(": * ? \" < > |").split(" "); + if (p_allow_dir_separator) { + // Dir separators are allowed, but disallow ".." to avoid going up the filesystem + invalid_chars.push_back(".."); + } else { + invalid_chars.push_back("/"); + } + + String safe_dir_name = p_dir_name.replace("\\", "/").strip_edges(); + for (int i = 0; i < invalid_chars.size(); i++) { + safe_dir_name = safe_dir_name.replace(invalid_chars[i], "-"); } - return an; + return safe_dir_name; } // Path to data, config, cache, etc. OS-specific folders diff --git a/core/os/os.h b/core/os/os.h index d7a1512e39..c72696fe37 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -338,7 +338,7 @@ public: virtual String get_locale() const; - String get_safe_application_name() const; + String get_safe_dir_name(const String &p_dir_name, bool p_allow_dir_separator = false) const; virtual String get_godot_dir_name() const; virtual String get_data_path() const; diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 361464ee1f..67b081de34 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -429,7 +429,7 @@ Error ProjectSettings::_load_settings_binary(const String p_path) { uint32_t vlen = f->get_32(); Vector<uint8_t> d; d.resize(vlen); - f->get_buffer(d.ptr(), vlen); + f->get_buffer(d.ptrw(), vlen); Variant value; Error err = decode_variant(value, d.ptr(), d.size()); ERR_EXPLAIN("Error decoding property: " + key); @@ -891,7 +891,8 @@ ProjectSettings::ProjectSettings() { custom_prop_info["application/run/main_scene"] = PropertyInfo(Variant::STRING, "application/run/main_scene", PROPERTY_HINT_FILE, "tscn,scn,res"); GLOBAL_DEF("application/run/disable_stdout", false); GLOBAL_DEF("application/run/disable_stderr", false); - GLOBAL_DEF("application/config/use_shared_user_dir", true); + GLOBAL_DEF("application/config/use_custom_user_dir", false); + GLOBAL_DEF("application/config/custom_user_dir_name", ""); key.instance(); key->set_scancode(KEY_ENTER); diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index baaf738b42..17f951e4f4 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -129,6 +129,9 @@ void register_core_types() { ClassDB::register_class<InputEventScreenDrag>(); ClassDB::register_class<InputEventScreenTouch>(); ClassDB::register_class<InputEventAction>(); + ClassDB::register_virtual_class<InputEventGesture>(); + ClassDB::register_class<InputEventMagnifyGesture>(); + ClassDB::register_class<InputEventPanGesture>(); ClassDB::register_class<FuncRef>(); ClassDB::register_virtual_class<StreamPeer>(); diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp index 8d2600e52d..94c48f1c8f 100644 --- a/core/script_debugger_local.cpp +++ b/core/script_debugger_local.cpp @@ -212,7 +212,7 @@ void ScriptDebuggerLocal::idle_poll() { } SortArray<ScriptLanguage::ProfilingInfo, _ScriptDebuggerLocalProfileInfoSort> sort; - sort.sort(pinfo.ptr(), ofs); + sort.sort(pinfo.ptrw(), ofs); //falta el frame time @@ -264,7 +264,7 @@ void ScriptDebuggerLocal::profiling_end() { } SortArray<ScriptLanguage::ProfilingInfo, _ScriptDebuggerLocalProfileInfoSort> sort; - sort.sort(pinfo.ptr(), ofs); + sort.sort(pinfo.ptrw(), ofs); uint64_t total_us = 0; for (int i = 0; i < ofs; i++) { diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp index 5e06339b9e..495c99c122 100644 --- a/core/script_debugger_remote.cpp +++ b/core/script_debugger_remote.cpp @@ -749,7 +749,7 @@ void ScriptDebuggerRemote::_send_profiling_data(bool p_for_frame) { } SortArray<ScriptLanguage::ProfilingInfo *, ProfileInfoSort> sa; - sa.sort(profile_info_ptrs.ptr(), ofs); + sa.sort(profile_info_ptrs.ptrw(), ofs); int to_send = MIN(ofs, max_frame_functions); diff --git a/core/string_buffer.cpp b/core/string_buffer.cpp index 195068f887..8489df2599 100644 --- a/core/string_buffer.cpp +++ b/core/string_buffer.cpp @@ -71,7 +71,7 @@ StringBuffer &StringBuffer::reserve(int p_size) { bool need_copy = string_length > 0 && buffer.empty(); buffer.resize(next_power_of_2(p_size)); if (need_copy) { - memcpy(buffer.ptr(), short_buffer, string_length * sizeof(CharType)); + memcpy(buffer.ptrw(), short_buffer, string_length * sizeof(CharType)); } return *this; diff --git a/core/string_buffer.h b/core/string_buffer.h index 3f36249148..b6ccd4af20 100644 --- a/core/string_buffer.h +++ b/core/string_buffer.h @@ -40,7 +40,7 @@ class StringBuffer { int string_length = 0; _FORCE_INLINE_ CharType *current_buffer_ptr() { - return static_cast<Vector<CharType> &>(buffer).empty() ? short_buffer : buffer.ptr(); + return static_cast<Vector<CharType> &>(buffer).empty() ? short_buffer : buffer.ptrw(); } public: diff --git a/core/ustring.cpp b/core/ustring.cpp index 8d40f56386..a86fb46c8a 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -115,7 +115,7 @@ void String::copy_from(const char *p_cstr) { resize(len + 1); // include 0 - CharType *dst = this->ptr(); + CharType *dst = this->ptrw(); for (int i = 0; i < len + 1; i++) { @@ -1119,7 +1119,7 @@ String String::num_int64(int64_t p_num, int base, bool capitalize_hex) { chars++; String s; s.resize(chars + 1); - CharType *c = s.ptr(); + CharType *c = s.ptrw(); c[chars] = 0; n = num; do { diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 4a140bdb99..10f5ca0ce1 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -499,7 +499,7 @@ struct _VariantCall { PoolByteArray::Read r = ba->read(); CharString cs; cs.resize(ba->size() + 1); - copymem(cs.ptr(), r.ptr(), ba->size()); + copymem(cs.ptrw(), r.ptr(), ba->size()); cs[ba->size()] = 0; s = cs.get_data(); diff --git a/core/vector.h b/core/vector.h index 03eaf65099..a5c4b3b155 100644 --- a/core/vector.h +++ b/core/vector.h @@ -96,7 +96,7 @@ class Vector { void _copy_on_write(); public: - _FORCE_INLINE_ T *ptr() { + _FORCE_INLINE_ T *ptrw() { if (!_ptr) return NULL; _copy_on_write(); return (T *)_get_data(); @@ -361,7 +361,7 @@ template <class T> void Vector<T>::remove(int p_index) { ERR_FAIL_INDEX(p_index, size()); - T *p = ptr(); + T *p = ptrw(); int len = size(); for (int i = p_index; i < len - 1; i++) { |