src: use unique_ptr for http2_state

PR-URL: https://github.com/nodejs/node/pull/17078
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
Franziska Hinkelmann 2017-11-16 15:56:20 +01:00 committed by Anna Henningsen
parent d61cd9d4fe
commit 2d50b5e537
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9
3 changed files with 10 additions and 9 deletions

View File

@ -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_);
}
@ -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 {

View File

@ -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);
@ -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_;

View File

@ -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, \
@ -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);