Add HandleScope to http-parser binding
Fixes production crashes. We were not able to reproduce in the test suite.
This commit is contained in:
parent
07c27e040e
commit
73cf8e82e7
@ -120,6 +120,7 @@ static size_t current_buffer_len;
|
|||||||
|
|
||||||
#define HTTP_CB(name) \
|
#define HTTP_CB(name) \
|
||||||
static int name(http_parser* p_) { \
|
static int name(http_parser* p_) { \
|
||||||
|
HandleScope scope; \
|
||||||
Parser* self = container_of(p_, Parser, parser_); \
|
Parser* self = container_of(p_, Parser, parser_); \
|
||||||
return self->name##_(); \
|
return self->name##_(); \
|
||||||
} \
|
} \
|
||||||
@ -128,6 +129,7 @@ static size_t current_buffer_len;
|
|||||||
|
|
||||||
#define HTTP_DATA_CB(name) \
|
#define HTTP_DATA_CB(name) \
|
||||||
static int name(http_parser* p_, const char* at, size_t length) { \
|
static int name(http_parser* p_, const char* at, size_t length) { \
|
||||||
|
HandleScope scope; \
|
||||||
Parser* self = container_of(p_, Parser, parser_); \
|
Parser* self = container_of(p_, Parser, parser_); \
|
||||||
return self->name##_(at, length); \
|
return self->name##_(at, length); \
|
||||||
} \
|
} \
|
||||||
@ -212,10 +214,12 @@ struct StringPtr {
|
|||||||
|
|
||||||
|
|
||||||
Handle<String> ToString() const {
|
Handle<String> ToString() const {
|
||||||
if (str_)
|
HandleScope scope;
|
||||||
return String::New(str_, size_);
|
if (str_) {
|
||||||
else
|
return scope.Close(String::New(str_, size_));
|
||||||
return String::Empty();
|
} else {
|
||||||
|
return scope.Close(String::Empty());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -513,6 +517,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Local<Array> CreateHeaders() {
|
Local<Array> CreateHeaders() {
|
||||||
|
HandleScope scope;
|
||||||
|
|
||||||
// num_values_ is either -1 or the entry # of the last header
|
// num_values_ is either -1 or the entry # of the last header
|
||||||
// so num_values_ == 0 means there's a single header
|
// so num_values_ == 0 means there's a single header
|
||||||
Local<Array> headers = Array::New(2 * (num_values_ + 1));
|
Local<Array> headers = Array::New(2 * (num_values_ + 1));
|
||||||
@ -522,7 +528,7 @@ private:
|
|||||||
headers->Set(2 * i + 1, values_[i].ToString());
|
headers->Set(2 * i + 1, values_[i].ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return headers;
|
return scope.Close(headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user