Skip to content

Commit 0ccc23b

Browse files
committed
Fix memory leak
1 parent 383be13 commit 0ccc23b

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/nodes/file.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,22 @@ std::unique_ptr<NodeResult> WriteFileNode::evaluate(PSC::Context &ctx) {
7171
throw PSC::RuntimeError(token, ctx, "File '" + filename.value + "' is opened as read-only");
7272

7373
auto nodeRes = node.evaluate(ctx);
74-
PSC::String *data;
74+
std::unique_ptr<PSC::String> data;
7575
switch (nodeRes->type) {
7676
case PSC::DataType::INTEGER:
77-
data = nodeRes->get<PSC::Integer>().toString().release();
77+
data = nodeRes->get<PSC::Integer>().toString();
7878
break;
7979
case PSC::DataType::REAL:
80-
data = nodeRes->get<PSC::Real>().toString().release();
80+
data = nodeRes->get<PSC::Real>().toString();
8181
break;
8282
case PSC::DataType::BOOLEAN:
83-
data = nodeRes->get<PSC::Boolean>().toString().release();
83+
data = nodeRes->get<PSC::Boolean>().toString();
8484
break;
8585
case PSC::DataType::CHAR:
86-
data = nodeRes->get<PSC::Char>().toString().release();
86+
data = nodeRes->get<PSC::Char>().toString();
8787
break;
8888
case PSC::DataType::STRING:
89-
data = (PSC::String*) nodeRes->data.release();
89+
data = std::move(*((std::unique_ptr<PSC::String>*) &nodeRes->data));
9090
break;
9191
case PSC::DataType::NONE:
9292
throw PSC::RuntimeError(token, ctx, "Expected value for writing");

0 commit comments

Comments
 (0)