Skip to content

Commit e3f3cb5

Browse files
authored
Merge pull request #1450 from dsnopek/free-property-list-count
Update `free_property_list` callback to take count
2 parents 17a82e7 + 8cc78cf commit e3f3cb5

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

gdextension/gdextension_interface.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ typedef struct {
257257

258258
typedef const GDExtensionPropertyInfo *(*GDExtensionClassGetPropertyList)(GDExtensionClassInstancePtr p_instance, uint32_t *r_count);
259259
typedef void (*GDExtensionClassFreePropertyList)(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list);
260+
typedef void (*GDExtensionClassFreePropertyList2)(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list, uint32_t p_count);
260261
typedef GDExtensionBool (*GDExtensionClassPropertyCanRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name);
261262
typedef GDExtensionBool (*GDExtensionClassPropertyGetRevert)(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret);
262263
typedef GDExtensionBool (*GDExtensionClassValidateProperty)(GDExtensionClassInstancePtr p_instance, GDExtensionPropertyInfo *p_property);
@@ -334,7 +335,7 @@ typedef struct {
334335
GDExtensionClassSet set_func;
335336
GDExtensionClassGet get_func;
336337
GDExtensionClassGetPropertyList get_property_list_func;
337-
GDExtensionClassFreePropertyList free_property_list_func;
338+
GDExtensionClassFreePropertyList2 free_property_list_func;
338339
GDExtensionClassPropertyCanRevert property_can_revert_func;
339340
GDExtensionClassPropertyGetRevert property_get_revert_func;
340341
GDExtensionClassValidateProperty validate_property_func;

include/godot_cpp/classes/wrapped.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class Wrapped {
7878
static GDExtensionBool set_bind(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionConstVariantPtr p_value) { return false; }
7979
static GDExtensionBool get_bind(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret) { return false; }
8080
static const GDExtensionPropertyInfo *get_property_list_bind(GDExtensionClassInstancePtr p_instance, uint32_t *r_count) { return nullptr; }
81-
static void free_property_list_bind(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list) {}
81+
static void free_property_list_bind(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list, uint32_t p_count) {}
8282
static GDExtensionBool property_can_revert_bind(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name) { return false; }
8383
static GDExtensionBool property_get_revert_bind(GDExtensionClassInstancePtr p_instance, GDExtensionConstStringNamePtr p_name, GDExtensionVariantPtr r_ret) { return false; }
8484
static GDExtensionBool validate_property_bind(GDExtensionClassInstancePtr p_instance, GDExtensionPropertyInfo *p_property) { return false; }
@@ -292,11 +292,10 @@ public:
292292
return ::godot::internal::create_c_property_list(plist_cpp, r_count); \
293293
} \
294294
\
295-
static void free_property_list_bind(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list) { \
295+
static void free_property_list_bind(GDExtensionClassInstancePtr p_instance, const GDExtensionPropertyInfo *p_list, uint32_t p_count) { \
296296
if (p_instance) { \
297297
m_class *cls = reinterpret_cast<m_class *>(p_instance); \
298298
cls->plist_owned.clear(); \
299-
/* TODO `GDExtensionClassFreePropertyList` is ill-defined, we need a non-const pointer to free this. */ \
300299
::godot::internal::free_c_property_list(const_cast<GDExtensionPropertyInfo *>(p_list)); \
301300
} \
302301
} \

include/godot_cpp/core/class_db.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ void ClassDB::_register_class(bool p_virtual, bool p_exposed, bool p_runtime) {
229229
T::set_bind, // GDExtensionClassSet set_func;
230230
T::get_bind, // GDExtensionClassGet get_func;
231231
T::has_get_property_list() ? T::get_property_list_bind : nullptr, // GDExtensionClassGetPropertyList get_property_list_func;
232-
T::free_property_list_bind, // GDExtensionClassFreePropertyList free_property_list_func;
232+
T::free_property_list_bind, // GDExtensionClassFreePropertyList2 free_property_list_func;
233233
T::property_can_revert_bind, // GDExtensionClassPropertyCanRevert property_can_revert_func;
234234
T::property_get_revert_bind, // GDExtensionClassPropertyGetRevert property_get_revert_func;
235235
T::validate_property_bind, // GDExtensionClassValidateProperty validate_property_func;

0 commit comments

Comments
 (0)