Browse Source

src: use size_t for http parser array size fields

Make the `num_values_` and `num_fields_` unsigned and remove an
erroneous comment.

PR-URL: https://github.com/nodejs/node/pull/5969
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
process-exit-stdio-flushing
Ben Noordhuis 9 years ago
parent
commit
ea63f79752
  1. 18
      src/node_http_parser.cc

18
src/node_http_parser.cc

@ -193,7 +193,7 @@ class Parser : public AsyncWrap {
if (num_fields_ == num_values_) { if (num_fields_ == num_values_) {
// start of new field name // start of new field name
num_fields_++; num_fields_++;
if (num_fields_ == static_cast<int>(arraysize(fields_))) { if (num_fields_ == arraysize(fields_)) {
// ran out of space - flush to javascript land // ran out of space - flush to javascript land
Flush(); Flush();
num_fields_ = 1; num_fields_ = 1;
@ -202,7 +202,7 @@ class Parser : public AsyncWrap {
fields_[num_fields_ - 1].Reset(); fields_[num_fields_ - 1].Reset();
} }
CHECK_LT(num_fields_, static_cast<int>(arraysize(fields_))); CHECK_LT(num_fields_, arraysize(fields_));
CHECK_EQ(num_fields_, num_values_ + 1); CHECK_EQ(num_fields_, num_values_ + 1);
fields_[num_fields_ - 1].Update(at, length); fields_[num_fields_ - 1].Update(at, length);
@ -218,7 +218,7 @@ class Parser : public AsyncWrap {
values_[num_values_ - 1].Reset(); values_[num_values_ - 1].Reset();
} }
CHECK_LT(num_values_, static_cast<int>(arraysize(values_))); CHECK_LT(num_values_, arraysize(values_));
CHECK_EQ(num_values_, num_fields_); CHECK_EQ(num_values_, num_fields_);
values_[num_values_ - 1].Update(at, length); values_[num_values_ - 1].Update(at, length);
@ -385,11 +385,11 @@ class Parser : public AsyncWrap {
url_.Save(); url_.Save();
status_message_.Save(); status_message_.Save();
for (int i = 0; i < num_fields_; i++) { for (size_t i = 0; i < num_fields_; i++) {
fields_[i].Save(); fields_[i].Save();
} }
for (int i = 0; i < num_values_; i++) { for (size_t i = 0; i < num_values_; i++) {
values_[i].Save(); values_[i].Save();
} }
} }
@ -637,12 +637,10 @@ class Parser : public AsyncWrap {
} }
Local<Array> CreateHeaders() { Local<Array> CreateHeaders() {
// num_values_ is either -1 or the entry # of the last header
// so num_values_ == 0 means there's a single header
Local<Array> headers = Array::New(env()->isolate()); Local<Array> headers = Array::New(env()->isolate());
Local<Function> fn = env()->push_values_to_array_function(); Local<Function> fn = env()->push_values_to_array_function();
Local<Value> argv[NODE_PUSH_VAL_TO_ARRAY_MAX * 2]; Local<Value> argv[NODE_PUSH_VAL_TO_ARRAY_MAX * 2];
int i = 0; size_t i = 0;
do { do {
size_t j = 0; size_t j = 0;
@ -702,8 +700,8 @@ class Parser : public AsyncWrap {
StringPtr values_[32]; // header values StringPtr values_[32]; // header values
StringPtr url_; StringPtr url_;
StringPtr status_message_; StringPtr status_message_;
int num_fields_; size_t num_fields_;
int num_values_; size_t num_values_;
bool have_flushed_; bool have_flushed_;
bool got_exception_; bool got_exception_;
Local<Object> current_buffer_; Local<Object> current_buffer_;

Loading…
Cancel
Save