diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-07 11:21:27 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-07 11:21:27 +0100 |
commit | 94ebd2816ed1cbf08334573175d2ed1dec18f962 (patch) | |
tree | 5f653ea2b204414de138c81a321169a236e1144a /serialize | |
parent | bdbf5534c58aa5649751d0e239f13bd22f9de158 (diff) |
fix use after free
Diffstat (limited to 'serialize')
-rw-r--r-- | serialize/anim.cpp | 1 | ||||
-rw-r--r-- | serialize/anim.hpp | 6 | ||||
-rw-r--r-- | serialize/magnum-vector2i.hpp | 5 | ||||
-rw-r--r-- | serialize/string.cpp | 39 | ||||
-rw-r--r-- | serialize/string.hpp | 27 | ||||
-rw-r--r-- | serialize/tile-atlas.cpp | 3 |
6 files changed, 6 insertions, 75 deletions
diff --git a/serialize/anim.cpp b/serialize/anim.cpp index 9cafbfc0..79608de0 100644 --- a/serialize/anim.cpp +++ b/serialize/anim.cpp @@ -1,6 +1,5 @@ #include "serialize/magnum-vector2i.hpp" #include "serialize/anim.hpp" -#include "serialize/string.hpp" namespace floormat::Serialize { diff --git a/serialize/anim.hpp b/serialize/anim.hpp index 9d6db66c..fa6b6d22 100644 --- a/serialize/anim.hpp +++ b/serialize/anim.hpp @@ -1,7 +1,7 @@ #pragma once #include <vector> -#include <Corrade/Containers/String.h> +#include <string> #include <Magnum/Magnum.h> #include <Magnum/Math/Vector2.h> #include <nlohmann/json_fwd.hpp> @@ -22,7 +22,7 @@ enum class anim_direction : unsigned char struct anim_group final { - String name; + std::string name; std::vector<anim_frame> frames; Vector2ui ground; }; @@ -31,7 +31,7 @@ struct anim final { static constexpr int default_fps = 24; - String object_name, anim_name; + std::string object_name, anim_name; std::vector<anim_group> groups; Vector2ui pixel_size; std::size_t nframes = 0, width = 0, height = 0, fps = default_fps, actionframe = 0; diff --git a/serialize/magnum-vector2i.hpp b/serialize/magnum-vector2i.hpp index 7b78d73f..d1074b55 100644 --- a/serialize/magnum-vector2i.hpp +++ b/serialize/magnum-vector2i.hpp @@ -1,8 +1,7 @@ #include "compat/assert.hpp" -#include "serialize/string.hpp" #include <cstdio> +#include <string> #include <Magnum/Math/Vector2.h> -#include <Corrade/Containers/StringView.h> #include <nlohmann/json.hpp> namespace nlohmann { @@ -21,7 +20,7 @@ struct adl_serializer<Magnum::Math::Vector2<t>> final } static void from_json(const json& j, Magnum::Math::Vector2<t>& val) { - Corrade::Containers::StringView str = j; + std::string str = j; using type = std::conditional_t<std::is_signed_v<t>, std::intmax_t, std::uintmax_t>; constexpr auto format_string = std::is_signed_v<t> ? "%jd x %jd%n" : "%ju x %ju%n"; type x = 0, y = 0; diff --git a/serialize/string.cpp b/serialize/string.cpp deleted file mode 100644 index 0c0fa74e..00000000 --- a/serialize/string.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "string.hpp" -#include <Corrade/Containers/String.h> -#include <string_view> -#include <nlohmann/json.hpp> - -using String = Corrade::Containers::String; -using StringView = Corrade::Containers::StringView; - -namespace nlohmann { - -void adl_serializer<String>::to_json(json& j, const String& val) -{ - using nlohmann::to_json; - to_json(j, std::string_view { val.cbegin(), val.cend() }); -} - -void adl_serializer<String>::from_json(const json& j, String& val) -{ - using nlohmann::from_json; - std::string_view str; - from_json(j, str); - val = { str.cbegin(), str.size() }; -} - -void adl_serializer<StringView>::to_json(json& j, const StringView& val) -{ - using nlohmann::to_json; - to_json(j, std::string_view { val.cbegin(), val.cend() }); -} - -void adl_serializer<StringView>::from_json(const json& j, StringView& val) -{ - using nlohmann::from_json; - std::string_view str; - from_json(j, str); - val = { str.cbegin(), str.size() }; -} - -} // namespace nlohmann diff --git a/serialize/string.hpp b/serialize/string.hpp deleted file mode 100644 index 66e448a4..00000000 --- a/serialize/string.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include <nlohmann/json_fwd.hpp> - -namespace Corrade::Containers { - -template<typename T> class BasicStringView; -class String; -using StringView = BasicStringView<const char>; - -} // namespace Corrade::Containers - -namespace nlohmann { - -template<> -struct adl_serializer<Corrade::Containers::String> { - static void to_json(json& j, const Corrade::Containers::String& val); - static void from_json(const json& j, Corrade::Containers::String& val); -}; - -template<> -struct adl_serializer<Corrade::Containers::StringView> { - static void to_json(json& j, const Corrade::Containers::StringView& val); - static void from_json(const json& j, Corrade::Containers::StringView& val); -}; - -} // namespace nlohmann diff --git a/serialize/tile-atlas.cpp b/serialize/tile-atlas.cpp index 711d5fdd..8caaedd3 100644 --- a/serialize/tile-atlas.cpp +++ b/serialize/tile-atlas.cpp @@ -1,7 +1,6 @@ #include "src/tile-atlas.hpp" #include "serialize/tile-atlas.hpp" #include "serialize/magnum-vector2i.hpp" -#include "serialize/string.hpp" #include "loader.hpp" #include <tuple> @@ -11,7 +10,7 @@ using namespace floormat; namespace nlohmann { -using proxy_atlas = std::tuple<StringView, Vector2ub>; +using proxy_atlas = std::tuple<std::string, Vector2ub>; void adl_serializer<std::shared_ptr<tile_atlas>>::to_json(json& j, const std::shared_ptr<const tile_atlas>& x) { |