src: avoid manual memory management in inspector · nodejs/node@c8c1f96
@@ -48,8 +48,8 @@ void PrintDebuggerReadyMessage(int port) {
4848 port, DEVTOOLS_HASH, port);
4949}
505051-bool AcceptsConnection(inspector_socket_t* socket, const char* path) {
52-return strncmp(DEVTOOLS_PATH, path, sizeof(DEVTOOLS_PATH)) == 0;
51+bool AcceptsConnection(inspector_socket_t* socket, const std::string& path) {
52+return 0 == path.compare(0, sizeof(DEVTOOLS_PATH) - 1, DEVTOOLS_PATH);
5353}
54545555void DisposeInspector(inspector_socket_t* socket, int status) {
@@ -63,10 +63,7 @@ void DisconnectAndDisposeIO(inspector_socket_t* socket) {
6363}
64646565void OnBufferAlloc(uv_handle_t* handle, size_t len, uv_buf_t* buf) {
66-if (len > 0) {
67- buf->base = static_cast<char*>(malloc(len));
68-CHECK_NE(buf->base, nullptr);
69- }
66+ buf->base = new char[len];
7067 buf->len = len;
7168}
7269@@ -133,18 +130,19 @@ void SendTargentsListResponse(inspector_socket_t* socket, int port) {
133130SendHttpResponse(socket, buffer, len);
134131}
135132136-bool RespondToGet(inspector_socket_t* socket, const char* path, int port) {
133+bool RespondToGet(inspector_socket_t* socket, const std::string& path,
134+int port) {
137135const char PATH[] = "/json";
138136const char PATH_LIST[] = "/json/list";
139137const char PATH_VERSION[] = "/json/version";
140138const char PATH_ACTIVATE[] = "/json/activate/";
141-if (!strncmp(PATH_VERSION, path, sizeof(PATH_VERSION))) {
139+if (0 == path.compare(0, sizeof(PATH_VERSION) - 1, PATH_VERSION)) {
142140SendVersionResponse(socket);
143- } else if (!strncmp(PATH_LIST, path, sizeof(PATH_LIST)) ||
144-!strncmp(PATH, path, sizeof(PATH))) {
141+ } else if (0 == path.compare(0, sizeof(PATH_LIST) - 1, PATH_LIST) ||
142+0 == path.compare(0, sizeof(PATH) - 1, PATH)) {
145143SendTargentsListResponse(socket, port);
146- } else if (!strncmp(path, PATH_ACTIVATE, sizeof(PATH_ACTIVATE) - 1) &&
147-atoi(path + (sizeof(PATH_ACTIVATE) - 1)) == getpid()) {
144+ } else if (0 == path.compare(0, sizeof(PATH_ACTIVATE) - 1, PATH_ACTIVATE) &&
145+atoi(path.substr(sizeof(PATH_ACTIVATE) - 1).c_str()) == getpid()) {
148146const char TARGET_ACTIVATED[] = "Target activated";
149147SendHttpResponse(socket, TARGET_ACTIVATED, sizeof(TARGET_ACTIVATED) - 1);
150148 } else {
@@ -181,7 +179,7 @@ class AgentImpl {
181179static void OnSocketConnectionIO(uv_stream_t* server, int status);
182180static bool OnInspectorHandshakeIO(inspector_socket_t* socket,
183181enum inspector_handshake_event state,
184-const char* path);
182+const std::string& path);
185183static void WriteCbIO(uv_async_t* async);
186184187185void WorkerRunIO();
@@ -388,7 +386,6 @@ void AgentImpl::ThreadCbIO(void* agent) {
388386void AgentImpl::OnSocketConnectionIO(uv_stream_t* server, int status) {
389387if (status == 0) {
390388inspector_socket_t* socket = new inspector_socket_t();
391-memset(socket, 0, sizeof(*socket));
392389 socket->data = server->data;
393390if (inspector_accept(server, socket,
394391 AgentImpl::OnInspectorHandshakeIO) != 0) {
@@ -399,8 +396,8 @@ void AgentImpl::OnSocketConnectionIO(uv_stream_t* server, int status) {
399396400397// static
401398bool AgentImpl::OnInspectorHandshakeIO(inspector_socket_t* socket,
402-enum inspector_handshake_event state,
403-const char* path) {
399+ enum inspector_handshake_event state,
400+ const std::string& path) {
404401 AgentImpl* agent = static_cast<AgentImpl*>(socket->data);
405402switch (state) {
406403case kInspectorHandshakeHttpGet:
@@ -443,7 +440,7 @@ void AgentImpl::OnRemoteDataIO(inspector_socket_t* socket,
443440DisconnectAndDisposeIO(socket);
444441 }
445442if (buf) {
446-free(buf->base);
443+delete[] buf->base;
447444 }
448445 pause_cond_.Broadcast(scoped_lock);
449446}