Skip to content

Commit 0fa2e5f

Browse files
committed
fix: fix memory leak in BinaryStream
refactor: use shared_ptr in ConfIniClass
1 parent feaecee commit 0fa2e5f

File tree

11 files changed

+105
-102
lines changed

11 files changed

+105
-102
lines changed

src/legacy/api/ContainerAPI.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
class Container;
99
class ContainerClass : public ScriptClass {
1010
private:
11+
// Container is managed by BDS, so use raw pointer
1112
Container* container;
1213

1314
public:

src/legacy/api/DataAPI.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include "ll/api/utils/StringUtils.h"
1010
#include "lse/api/Hash.h"
1111
#include "main/EconomicSystem.h"
12-
#include "mc/deps/crypto/hash/Hash.h"
1312
#include "utils/JsonHelper.h"
1413

1514
#include <ctre/ctre.hpp>

src/legacy/api/DataAPI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ extern ClassDefine<ConfJsonClass> ConfJsonClassBuilder;
9797

9898
class ConfIniClass : public ScriptClass, public ConfBaseClass {
9999
private:
100-
std::shared_ptr<SimpleIni> iniConf;
100+
std::unique_ptr<SimpleIni> iniConf = nullptr;
101101
bool flush() override;
102102
bool close() override;
103103
bool reload() override;

src/legacy/api/DatabaseAPI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
//// KVDB
99
class KVDBClass : public ScriptClass {
1010
private:
11-
std::unique_ptr<ll::data::KeyValueDB> kvdb;
11+
std::unique_ptr<ll::data::KeyValueDB> kvdb = nullptr;
1212
int unloadCallbackIndex = -1;
1313

1414
public:

src/legacy/api/ItemAPI.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class ItemStack;
1010

1111
class ItemClass : public ScriptClass {
1212
private:
13-
std::variant<ItemStack*, std::unique_ptr<ItemStack>> item; // BDS manages ItemStack*
13+
// ItemStack* is managed by BDS// ItemStack* is managed by BDS
14+
std::variant<ItemStack*, std::unique_ptr<ItemStack>> item;
1415

1516
// Pre data
1617
std::string name, type;

src/legacy/api/NbtAPI.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ extern ClassDefine<void> NbtStaticBuilder;
3030
// NBT Byte
3131
class NbtByteClass : public ScriptClass {
3232
public:
33-
std::unique_ptr<ByteTag> nbt;
33+
std::unique_ptr<ByteTag> nbt = nullptr;
3434
bool canDelete = true;
3535

3636
explicit NbtByteClass(const Local<Object>& scriptObj, std::unique_ptr<ByteTag> p);
@@ -54,7 +54,7 @@ extern ClassDefine<NbtByteClass> NbtByteClassBuilder;
5454
// NBT Short
5555
class NbtShortClass : public ScriptClass {
5656
public:
57-
std::unique_ptr<ShortTag> nbt;
57+
std::unique_ptr<ShortTag> nbt = nullptr;
5858
bool canDelete = true;
5959

6060
explicit NbtShortClass(const Local<Object>& scriptObj, std::unique_ptr<ShortTag> p);
@@ -78,7 +78,7 @@ extern ClassDefine<NbtShortClass> NbtShortClassBuilder;
7878
// NBT Int
7979
class NbtIntClass : public ScriptClass {
8080
public:
81-
std::unique_ptr<IntTag> nbt;
81+
std::unique_ptr<IntTag> nbt = nullptr;
8282
bool canDelete = true;
8383

8484
explicit NbtIntClass(const Local<Object>& scriptObj, std::unique_ptr<IntTag> p);
@@ -102,7 +102,7 @@ extern ClassDefine<NbtIntClass> NbtIntClassBuilder;
102102
// NBT Long
103103
class NbtLongClass : public ScriptClass {
104104
public:
105-
std::unique_ptr<Int64Tag> nbt;
105+
std::unique_ptr<Int64Tag> nbt = nullptr;
106106
bool canDelete = true;
107107

108108
explicit NbtLongClass(const Local<Object>& scriptObj, std::unique_ptr<Int64Tag> p);
@@ -126,7 +126,7 @@ extern ClassDefine<NbtLongClass> NbtLongClassBuilder;
126126
// NBT Float
127127
class NbtFloatClass : public ScriptClass {
128128
public:
129-
std::unique_ptr<FloatTag> nbt;
129+
std::unique_ptr<FloatTag> nbt = nullptr;
130130
bool canDelete = true;
131131

132132
explicit NbtFloatClass(const Local<Object>& scriptObj, std::unique_ptr<FloatTag> p);
@@ -150,7 +150,7 @@ extern ClassDefine<NbtFloatClass> NbtFloatClassBuilder;
150150
// NBT Double
151151
class NbtDoubleClass : public ScriptClass {
152152
public:
153-
std::unique_ptr<DoubleTag> nbt;
153+
std::unique_ptr<DoubleTag> nbt = nullptr;
154154
bool canDelete = true;
155155

156156
explicit NbtDoubleClass(const Local<Object>& scriptObj, std::unique_ptr<DoubleTag> p);
@@ -174,7 +174,7 @@ extern ClassDefine<NbtDoubleClass> NbtDoubleClassBuilder;
174174
// NBT String
175175
class NbtStringClass : public ScriptClass {
176176
public:
177-
std::unique_ptr<StringTag> nbt;
177+
std::unique_ptr<StringTag> nbt = nullptr;
178178
bool canDelete = true;
179179

180180
explicit NbtStringClass(const Local<Object>& scriptObj, std::unique_ptr<StringTag> p);
@@ -198,7 +198,7 @@ extern ClassDefine<NbtStringClass> NbtStringClassBuilder;
198198
// NBT ByteArray
199199
class NbtByteArrayClass : public ScriptClass {
200200
public:
201-
std::unique_ptr<ByteArrayTag> nbt;
201+
std::unique_ptr<ByteArrayTag> nbt = nullptr;
202202
bool canDelete = true;
203203

204204
explicit NbtByteArrayClass(const Local<Object>& scriptObj, std::unique_ptr<ByteArrayTag> p);
@@ -222,7 +222,7 @@ extern ClassDefine<NbtByteArrayClass> NbtByteArrayClassBuilder;
222222
// NBT List
223223
class NbtListClass : public ScriptClass {
224224
public:
225-
std::unique_ptr<ListTag> nbt;
225+
std::unique_ptr<ListTag> nbt = nullptr;
226226
bool canDelete = true;
227227

228228
explicit NbtListClass(const Local<Object>& scriptObj, std::unique_ptr<ListTag> p);
@@ -264,7 +264,7 @@ extern ClassDefine<NbtListClass> NbtListClassBuilder;
264264
// NBT Compound
265265
class NbtCompoundClass : public ScriptClass {
266266
public:
267-
std::unique_ptr<CompoundTag> nbt;
267+
std::unique_ptr<CompoundTag> nbt = nullptr;
268268
bool canDelete = true;
269269

270270
explicit NbtCompoundClass(const Local<Object>& scriptObj, std::unique_ptr<CompoundTag> p);

src/legacy/api/NetworkAPI.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ extern ClassDefine<void> NetworkClassBuilder;
4242

4343
class WSClientClass : public ScriptClass {
4444
private:
45-
std::shared_ptr<WebSocketClient> ws;
45+
std::shared_ptr<WebSocketClient> ws = nullptr;
4646
std::list<ListenerListType> listeners[(int)WSClientEvents::EVENT_COUNT];
4747
void addListener(const string& event, Local<Function> func);
4848

@@ -102,7 +102,7 @@ class HttpServerClass : public ScriptClass {
102102
extern ClassDefine<HttpServerClass> HttpServerClassBuilder;
103103

104104
class HttpRequestClass : public ScriptClass {
105-
std::shared_ptr<httplib::Request> req;
105+
std::shared_ptr<httplib::Request> req = nullptr;
106106

107107
public:
108108
HttpRequestClass(const Local<Object>& scriptObj, const httplib::Request& req = {});
@@ -125,7 +125,7 @@ class HttpRequestClass : public ScriptClass {
125125
extern ClassDefine<HttpRequestClass> HttpRequestClassBuilder;
126126

127127
class HttpResponseClass : public ScriptClass {
128-
std::shared_ptr<httplib::Response> resp;
128+
std::shared_ptr<httplib::Response> resp = nullptr;
129129

130130
public:
131131
HttpResponseClass(const Local<Object>& scriptObj, const httplib::Response& resp = {});

0 commit comments

Comments
 (0)