summaryrefslogtreecommitdiffhomepage
path: root/serialize
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-11-07 11:21:27 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-11-07 11:21:27 +0100
commit94ebd2816ed1cbf08334573175d2ed1dec18f962 (patch)
tree5f653ea2b204414de138c81a321169a236e1144a /serialize
parentbdbf5534c58aa5649751d0e239f13bd22f9de158 (diff)
fix use after free
Diffstat (limited to 'serialize')
-rw-r--r--serialize/anim.cpp1
-rw-r--r--serialize/anim.hpp6
-rw-r--r--serialize/magnum-vector2i.hpp5
-rw-r--r--serialize/string.cpp39
-rw-r--r--serialize/string.hpp27
-rw-r--r--serialize/tile-atlas.cpp3
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)
{