Skip to content

Commit c80a86e

Browse files
committed
Remove all delete calls outside of _destroy functions
1 parent 3826091 commit c80a86e

File tree

6 files changed

+67
-129
lines changed

6 files changed

+67
-129
lines changed

src/CSFML/Audio/Music.cpp

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,22 @@ sfMusic* sfMusic_createFromFile(const char* filename)
3535
{
3636
assert(filename);
3737

38-
auto* music = new sfMusic;
39-
if (!music->This.openFromFile(filename))
40-
{
41-
delete music;
42-
music = nullptr;
43-
}
44-
45-
return music;
38+
sf::Music music;
39+
if (!music.openFromFile(filename))
40+
return nullptr;
41+
42+
return new sfMusic{std::move(music), {}};
4643
}
4744

4845

4946
////////////////////////////////////////////////////////////
5047
sfMusic* sfMusic_createFromMemory(const void* data, size_t sizeInBytes)
5148
{
52-
auto* music = new sfMusic;
53-
if (!music->This.openFromMemory(data, sizeInBytes))
54-
{
55-
delete music;
56-
music = nullptr;
57-
}
58-
59-
return music;
49+
sf::Music music;
50+
if (!music.openFromMemory(data, sizeInBytes))
51+
return nullptr;
52+
53+
return new sfMusic{std::move(music), {}};
6054
}
6155

6256

@@ -65,15 +59,11 @@ sfMusic* sfMusic_createFromStream(sfInputStream* stream)
6559
{
6660
assert(stream);
6761

68-
auto* music = new sfMusic;
69-
music->Stream = CallbackStream(stream);
62+
auto music = std::make_unique<sfMusic>(sfMusic{{}, {stream}});
7063
if (!music->This.openFromStream(music->Stream))
71-
{
72-
delete music;
73-
music = nullptr;
74-
}
64+
return nullptr;
7565

76-
return music;
66+
return music.release();
7767
}
7868

7969

src/CSFML/Audio/MusicStruct.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@
3737
////////////////////////////////////////////////////////////
3838
struct sfMusic
3939
{
40-
CallbackStream Stream;
4140
sf::Music This;
41+
CallbackStream Stream;
4242
};

src/CSFML/Graphics/Font.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,19 @@ sfFont* sfFont_createFromStream(sfInputStream* stream)
6060
{
6161
assert(stream);
6262

63-
auto* font = new sfFont;
64-
font->Stream = CallbackStream(stream);
63+
auto font = std::make_unique<sfFont>(sfFont{{}, {}, {stream}});
6564
if (!font->This.openFromStream(font->Stream))
66-
{
67-
delete font;
68-
font = nullptr;
69-
}
65+
return nullptr;
7066

71-
return font;
67+
return font.release();
7268
}
7369

7470

7571
////////////////////////////////////////////////////////////
7672
sfFont* sfFont_copy(const sfFont* font)
7773
{
7874
assert(font);
79-
return new sfFont(*font);
75+
return new sfFont{*font};
8076
}
8177

8278

src/CSFML/Graphics/Texture.cpp

Lines changed: 37 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,17 @@
3434
#include <CSFML/System/ConvertVector2.hpp>
3535
#include <CSFML/Window/WindowStruct.hpp>
3636

37+
#include <memory>
38+
3739

3840
////////////////////////////////////////////////////////////
3941
sfTexture* sfTexture_create(sfVector2u size)
4042
{
41-
auto* texture = new sfTexture;
42-
43+
auto texture = std::make_unique<sfTexture>();
4344
if (!texture->This->resize(convertVector2(size)))
44-
{
45-
delete texture;
46-
texture = nullptr;
47-
}
45+
return nullptr;
4846

49-
return texture;
47+
return texture.release();
5048
}
5149

5250

@@ -55,106 +53,75 @@ sfTexture* sfTexture_createFromFile(const char* filename, const sfIntRect* area)
5553
{
5654
assert(filename);
5755

58-
auto* texture = new sfTexture;
59-
60-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
61-
56+
const auto rect = area ? convertRect(*area) : sf::IntRect();
57+
auto texture = std::make_unique<sfTexture>();
6258
if (!texture->This->loadFromFile(filename, false, rect))
63-
{
64-
delete texture;
65-
texture = nullptr;
66-
}
59+
return nullptr;
6760

68-
return texture;
61+
return texture.release();
6962
}
7063

7164
////////////////////////////////////////////////////////////
7265
sfTexture* sfTexture_createSrgbFromFile(const char* filename, const sfIntRect* area)
7366
{
7467
assert(filename);
7568

76-
auto* texture = new sfTexture;
77-
78-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
79-
69+
const auto rect = area ? convertRect(*area) : sf::IntRect();
70+
auto texture = std::make_unique<sfTexture>();
8071
if (!texture->This->loadFromFile(filename, true, rect))
81-
{
82-
delete texture;
83-
texture = nullptr;
84-
}
72+
return nullptr;
8573

86-
return texture;
74+
return texture.release();
8775
}
8876

8977
////////////////////////////////////////////////////////////
9078
sfTexture* sfTexture_createFromMemory(const void* data, size_t sizeInBytes, const sfIntRect* area)
9179
{
92-
auto* texture = new sfTexture;
93-
94-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
95-
80+
const auto rect = area ? convertRect(*area) : sf::IntRect();
81+
auto texture = std::make_unique<sfTexture>();
9682
if (!texture->This->loadFromMemory(data, sizeInBytes, false, rect))
97-
{
98-
delete texture;
99-
texture = nullptr;
100-
}
83+
return nullptr;
10184

102-
return texture;
85+
return texture.release();
10386
}
10487

10588
////////////////////////////////////////////////////////////
10689
sfTexture* sfTexture_createSrgbFromMemory(const void* data, size_t sizeInBytes, const sfIntRect* area)
10790
{
108-
auto* texture = new sfTexture;
109-
110-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
111-
91+
const auto rect = area ? convertRect(*area) : sf::IntRect();
92+
auto texture = std::make_unique<sfTexture>();
11293
if (!texture->This->loadFromMemory(data, sizeInBytes, true, rect))
113-
{
114-
delete texture;
115-
texture = nullptr;
116-
}
94+
return nullptr;
11795

118-
return texture;
96+
return texture.release();
11997
}
12098

12199

122100
////////////////////////////////////////////////////////////
123101
sfTexture* sfTexture_createFromStream(sfInputStream* stream, const sfIntRect* area)
124102
{
125103
assert(stream);
126-
127-
auto* texture = new sfTexture;
128-
129-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
130-
104+
const auto rect = area ? convertRect(*area) : sf::IntRect();
131105
CallbackStream sfmlStream(stream);
106+
auto texture = std::make_unique<sfTexture>();
132107
if (!texture->This->loadFromStream(sfmlStream, false, rect))
133-
{
134-
delete texture;
135-
texture = nullptr;
136-
}
108+
return nullptr;
137109

138-
return texture;
110+
return texture.release();
139111
}
140112

141113
////////////////////////////////////////////////////////////
142114
sfTexture* sfTexture_createSrgbFromStream(sfInputStream* stream, const sfIntRect* area)
143115
{
144116
assert(stream);
145117

146-
auto* texture = new sfTexture;
147-
148-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
149-
118+
const auto rect = area ? convertRect(*area) : sf::IntRect();
150119
CallbackStream sfmlStream(stream);
120+
auto texture = std::make_unique<sfTexture>();
151121
if (!texture->This->loadFromStream(sfmlStream, true, rect))
152-
{
153-
delete texture;
154-
texture = nullptr;
155-
}
122+
return nullptr;
156123

157-
return texture;
124+
return texture.release();
158125
}
159126

160127

@@ -163,35 +130,25 @@ sfTexture* sfTexture_createFromImage(const sfImage* image, const sfIntRect* area
163130
{
164131
assert(image);
165132

166-
auto* texture = new sfTexture;
167-
168-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
169-
133+
const auto rect = area ? convertRect(*area) : sf::IntRect();
134+
auto texture = std::make_unique<sfTexture>();
170135
if (!texture->This->loadFromImage(image->This, false, rect))
171-
{
172-
delete texture;
173-
texture = nullptr;
174-
}
136+
return nullptr;
175137

176-
return texture;
138+
return texture.release();
177139
}
178140

179141
////////////////////////////////////////////////////////////
180142
sfTexture* sfTexture_createSrgbFromImage(const sfImage* image, const sfIntRect* area)
181143
{
182144
assert(image);
183145

184-
auto* texture = new sfTexture;
185-
186-
const sf::IntRect rect = area ? convertRect(*area) : sf::IntRect();
187-
146+
const auto rect = area ? convertRect(*area) : sf::IntRect();
147+
auto texture = std::make_unique<sfTexture>();
188148
if (!texture->This->loadFromImage(image->This, true, rect))
189-
{
190-
delete texture;
191-
texture = nullptr;
192-
}
149+
return nullptr;
193150

194-
return texture;
151+
return texture.release();
195152
}
196153

197154
////////////////////////////////////////////////////////////

src/CSFML/Graphics/VertexBuffer.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,14 @@
3232
////////////////////////////////////////////////////////////
3333
sfVertexBuffer* sfVertexBuffer_create(unsigned int vertexCount, sfPrimitiveType type, sfVertexBufferUsage usage)
3434
{
35-
auto* buffer = new sfVertexBuffer;
35+
sf::VertexBuffer buffer;
36+
if (!buffer.create(vertexCount))
37+
return nullptr;
3638

37-
if (!buffer->This.create(vertexCount))
38-
{
39-
delete buffer;
40-
buffer = nullptr;
41-
}
42-
else
43-
{
44-
buffer->This.setPrimitiveType(static_cast<sf::PrimitiveType>(type));
45-
buffer->This.setUsage(static_cast<sf::VertexBuffer::Usage>(usage));
46-
}
39+
buffer.setPrimitiveType(static_cast<sf::PrimitiveType>(type));
40+
buffer.setUsage(static_cast<sf::VertexBuffer::Usage>(usage));
4741

48-
return buffer;
42+
return new sfVertexBuffer{std::move(buffer)};
4943
}
5044

5145

src/CSFML/Network/TcpListener.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
#include <CSFML/Network/TcpListenerStruct.hpp>
3030
#include <CSFML/Network/TcpSocketStruct.hpp>
3131

32+
#include <memory>
33+
3234

3335
////////////////////////////////////////////////////////////
3436
sfTcpListener* sfTcpListener_create()
@@ -90,14 +92,13 @@ sfSocketStatus sfTcpListener_accept(sfTcpListener* listener, sfTcpSocket** conne
9092
assert(listener);
9193
assert(connected);
9294

93-
*connected = new sfTcpSocket;
94-
auto status = static_cast<sfSocketStatus>(listener->This.accept((*connected)->This));
95+
auto socket = std::make_unique<sfTcpSocket>();
96+
auto status = static_cast<sfSocketStatus>(listener->This.accept(socket->This));
9597

9698
if (status != sfSocketDone)
97-
{
98-
delete *connected;
9999
*connected = nullptr;
100-
}
100+
else
101+
*connected = socket.release();
101102

102103
return status;
103104
}

0 commit comments

Comments
 (0)