From ec2a9345bd194a38855bb1d7648d84b70722418a Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Thu, 5 Jul 2018 16:03:56 +0200 Subject: [PATCH] Fix crash when calling String::split/split_floats Was casting to the wrong object type. Also adds parse_ints function to String with the same logic --- include/core/String.hpp | 2 ++ src/core/String.cpp | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/core/String.hpp b/include/core/String.hpp index ff3a307a..52c11e6a 100644 --- a/include/core/String.hpp +++ b/include/core/String.hpp @@ -8,6 +8,7 @@ namespace godot { class NodePath; class Variant; class PoolByteArray; +class PoolIntArray; class PoolRealArray; class PoolStringArray; class String; @@ -120,6 +121,7 @@ public: String sha256_text() const; float similarity(String text) const; PoolStringArray split(String divisor, bool allow_empty = true) const; + PoolIntArray split_ints(String divisor, bool allow_empty = true) const; PoolRealArray split_floats(String divisor, bool allow_empty = true) const; String strip_edges(bool left = true, bool right = true) const; String substr(int from, int len) const; diff --git a/src/core/String.cpp b/src/core/String.cpp index f85fa04a..d0db02df 100644 --- a/src/core/String.cpp +++ b/src/core/String.cpp @@ -219,7 +219,7 @@ bool String::begins_with_char_array(const char *p_char_array) const { PoolStringArray String::bigrams() const { godot_array arr = godot::api->godot_string_bigrams(&_godot_string); - return *(PoolStringArray *)&arr; + return *(Array *)&arr; } String String::c_escape() const { @@ -479,13 +479,19 @@ float String::similarity(String text) const { PoolStringArray String::split(String divisor, bool allow_empty) const { godot_array arr = godot::api->godot_string_split(&_godot_string, &divisor._godot_string); - return *(PoolStringArray *)&arr; + return *(Array *)&arr; +} + +PoolIntArray String::split_ints(String divisor, bool allow_empty) const { + godot_array arr = godot::api->godot_string_split_floats(&_godot_string, &divisor._godot_string); + + return *(Array *)&arr; } PoolRealArray String::split_floats(String divisor, bool allow_empty) const { godot_array arr = godot::api->godot_string_split_floats(&_godot_string, &divisor._godot_string); - return *(PoolRealArray *)&arr; + return *(Array *)&arr; } String String::strip_edges(bool left, bool right) const {