Skip to content

Commit 0362f2d

Browse files
committed
Revert "Use standard pointers for now"
This reverts commit 179ce1c.
1 parent 179ce1c commit 0362f2d

2 files changed

Lines changed: 16 additions & 17 deletions

File tree

src/hx/libs/asys/libuv/system/LibuvChildProcess.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66
#include "LibuvChildProcess.h"
77

88
hx::asys::libuv::system::LibuvChildProcess::LibuvChildProcess()
9-
: request(new uv_process_t())
10-
, options(new uv_process_options_t())
11-
, arguments(new std::vector<char*>())
12-
, environment(new std::vector<char*>())
13-
, containers(new std::vector<uv_stdio_container_t>(3))
14-
, currentExitCode(new std::optional<int64_t>())
9+
: request(std::move(std::make_unique<uv_process_t>()))
10+
, options(std::move(std::make_unique<uv_process_options_t>()))
1511
, exitCallback(null())
1612
, closeCallback(null())
13+
, containers(3)
1714
{
18-
HX_OBJ_WB_NEW_MARKED_OBJECT(this);
15+
hx::GCSetFinalizer(this, [](hx::Object* obj) -> void {
16+
reinterpret_cast<LibuvChildProcess*>(obj)->~LibuvChildProcess();
17+
});
1918
}
2019

2120
hx::asys::Pid hx::asys::libuv::system::LibuvChildProcess::pid()
@@ -70,7 +69,7 @@ void hx::asys::libuv::system::LibuvChildProcess::sendSignal(hx::EnumBase signal,
7069
}
7170

7271
auto result = 0;
73-
if ((result = uv_process_kill(request, signum)) < 0)
72+
if ((result = uv_process_kill(request.get(), signum)) < 0)
7473
{
7574
cbFailure(hx::asys::libuv::uv_err_to_enum(result));
7675
}
@@ -82,9 +81,9 @@ void hx::asys::libuv::system::LibuvChildProcess::sendSignal(hx::EnumBase signal,
8281

8382
void hx::asys::libuv::system::LibuvChildProcess::exitCode(Dynamic cbSuccess, Dynamic cbFailure)
8483
{
85-
if (currentExitCode->has_value())
84+
if (currentExitCode.has_value())
8685
{
87-
cbSuccess(static_cast<int>(currentExitCode->value()));
86+
cbSuccess(static_cast<int>(currentExitCode.value()));
8887
}
8988
else
9089
{
@@ -96,7 +95,7 @@ void hx::asys::libuv::system::LibuvChildProcess::close(Dynamic cbSuccess, Dynami
9695
{
9796
closeCallback = cbSuccess.mPtr;
9897

99-
uv_close(reinterpret_cast<uv_handle_t*>(request), [](uv_handle_t* handle) {
98+
uv_close(reinterpret_cast<uv_handle_t*>(request.get()), [](uv_handle_t* handle) {
10099
auto gcZone = hx::AutoGCZone();
101100
auto process = std::unique_ptr<hx::RootedObject<hx::asys::libuv::system::LibuvChildProcess>>(reinterpret_cast<hx::RootedObject<hx::asys::libuv::system::LibuvChildProcess>*>(handle->data));
102101
auto callback = Dynamic(process->rooted->closeCallback);

src/hx/libs/asys/libuv/system/LibuvChildProcess.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ namespace hx::asys::libuv::system
1313
class LibuvChildProcess final : public hx::asys::system::ChildProcess_obj
1414
{
1515
public:
16-
uv_process_t* request;
17-
uv_process_options_t* options;
18-
std::vector<char*>* arguments;
19-
std::vector<char*>* environment;
20-
std::vector<uv_stdio_container_t>* containers;
21-
std::optional<int64_t>* currentExitCode;
16+
std::unique_ptr<uv_process_t> request;
17+
std::unique_ptr<uv_process_options_t> options;
18+
std::vector<char*> arguments;
19+
std::vector<char*> environment;
20+
std::vector<uv_stdio_container_t> containers;
21+
std::optional<int64_t> currentExitCode;
2222

2323
Dynamic exitCallback;
2424
Dynamic closeCallback;

0 commit comments

Comments
 (0)