Skip to content

Commit

Permalink
src: use unique_ptr for http2_state
Browse files Browse the repository at this point in the history
PR-URL: #17078
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information
fhinkel authored and addaleax committed Nov 19, 2017
1 parent d61cd9d commit 2d50b5e
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
10 changes: 5 additions & 5 deletions src/env-inl.h
Expand Up @@ -341,7 +341,6 @@ inline Environment::~Environment() {
delete[] heap_statistics_buffer_;
delete[] heap_space_statistics_buffer_;
delete[] http_parser_buffer_;
delete http2_state_;
free(performance_state_);
}

Expand Down Expand Up @@ -496,12 +495,13 @@ inline void Environment::set_http_parser_buffer(char* buffer) {
}

inline http2::http2_state* Environment::http2_state() const {
return http2_state_;
return http2_state_.get();
}

inline void Environment::set_http2_state(http2::http2_state* buffer) {
CHECK_EQ(http2_state_, nullptr); // Should be set only once.
http2_state_ = buffer;
inline void Environment::set_http2_state(
std::unique_ptr<http2::http2_state> buffer) {
CHECK(!http2_state_); // Should be set only once.
http2_state_ = std::move(buffer);
}

inline double* Environment::fs_stats_field_array() const {
Expand Down
4 changes: 2 additions & 2 deletions src/env.h
Expand Up @@ -617,7 +617,7 @@ class Environment {
inline void set_http_parser_buffer(char* buffer);

inline http2::http2_state* http2_state() const;
inline void set_http2_state(http2::http2_state * state);
inline void set_http2_state(std::unique_ptr<http2::http2_state> state);

inline double* fs_stats_field_array() const;
inline void set_fs_stats_field_array(double* fields);
Expand Down Expand Up @@ -752,7 +752,7 @@ class Environment {
double* heap_space_statistics_buffer_ = nullptr;

char* http_parser_buffer_;
http2::http2_state* http2_state_ = nullptr;
std::unique_ptr<http2::http2_state> http2_state_;

double* fs_stats_field_array_;

Expand Down
5 changes: 3 additions & 2 deletions src/node_http2.cc
Expand Up @@ -1211,8 +1211,7 @@ void Initialize(Local<Object> target,
Isolate* isolate = env->isolate();
HandleScope scope(isolate);

http2_state* state = new http2_state(isolate);
env->set_http2_state(state);
std::unique_ptr<http2_state> state(new http2_state(isolate));

#define SET_STATE_TYPEDARRAY(name, field) \
target->Set(context, \
Expand All @@ -1234,6 +1233,8 @@ void Initialize(Local<Object> target,
"optionsBuffer", state->options_buffer.GetJSArray());
#undef SET_STATE_TYPEDARRAY

env->set_http2_state(std::move(state));

NODE_DEFINE_CONSTANT(target, PADDING_BUF_FRAME_LENGTH);
NODE_DEFINE_CONSTANT(target, PADDING_BUF_MAX_PAYLOAD_LENGTH);
NODE_DEFINE_CONSTANT(target, PADDING_BUF_RETURN_VALUE);
Expand Down

0 comments on commit 2d50b5e

Please sign in to comment.