From 6789b29b725bce0cd629b5f87e05980420a03926 Mon Sep 17 00:00:00 2001 From: Adam Scott Date: Tue, 15 Aug 2023 11:51:34 -0400 Subject: [PATCH] Fix Clang deprecated builtins It seems that Clang and GCC have different interpretations of certain builtins. So this PR uses std functions just as cowdata.h does in the godot project. (cherry picked from commit 5c262844adb083fcaa9ef64b650fb9968d4812fd) --- include/godot_cpp/templates/cowdata.hpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/godot_cpp/templates/cowdata.hpp b/include/godot_cpp/templates/cowdata.hpp index 18320d80..ee3f5a46 100644 --- a/include/godot_cpp/templates/cowdata.hpp +++ b/include/godot_cpp/templates/cowdata.hpp @@ -39,6 +39,7 @@ #include #include +#include namespace godot { @@ -210,9 +211,9 @@ void CowData::_unref(void *p_data) { if (refc->decrement() > 0) { return; // still in use } - // clean up - if (!__has_trivial_destructor(T)) { + // clean up + if (std::is_trivially_destructible::value) { uint32_t *count = _get_size(); T *data = (T *)(count + 1); @@ -247,7 +248,7 @@ uint32_t CowData::_copy_on_write() { T *_data = (T *)(mem_new); // initialize new elements - if (__has_trivial_copy(T)) { + if (std::is_trivially_copyable::value) { memcpy(mem_new, _ptr, current_size * sizeof(T)); } else { @@ -310,7 +311,7 @@ Error CowData::resize(int p_size) { // construct the newly created elements - if (!__has_trivial_constructor(T)) { + if (!std::is_trivially_constructible::value) { T *elems = _get_data(); for (int i = *_get_size(); i < p_size; i++) { @@ -321,7 +322,7 @@ Error CowData::resize(int p_size) { *_get_size() = p_size; } else if (p_size < current_size) { - if (!__has_trivial_destructor(T)) { + if (!std::is_trivially_destructible::value) { // deinitialize no longer needed elements for (uint32_t i = p_size; i < *_get_size(); i++) { T *t = &_get_data()[i];