diff --git a/src/nodes/file.cpp b/src/nodes/file.cpp index 4c588be..3154695 100644 --- a/src/nodes/file.cpp +++ b/src/nodes/file.cpp @@ -71,22 +71,22 @@ std::unique_ptr WriteFileNode::evaluate(PSC::Context &ctx) { throw PSC::RuntimeError(token, ctx, "File '" + filename.value + "' is opened as read-only"); auto nodeRes = node.evaluate(ctx); - PSC::String *data; + std::unique_ptr data; switch (nodeRes->type) { case PSC::DataType::INTEGER: - data = nodeRes->get().toString().release(); + data = nodeRes->get().toString(); break; case PSC::DataType::REAL: - data = nodeRes->get().toString().release(); + data = nodeRes->get().toString(); break; case PSC::DataType::BOOLEAN: - data = nodeRes->get().toString().release(); + data = nodeRes->get().toString(); break; case PSC::DataType::CHAR: - data = nodeRes->get().toString().release(); + data = nodeRes->get().toString(); break; case PSC::DataType::STRING: - data = (PSC::String*) nodeRes->data.release(); + data = std::move(*((std::unique_ptr*) &nodeRes->data)); break; case PSC::DataType::NONE: throw PSC::RuntimeError(token, ctx, "Expected value for writing");