Only pass CommitRequest to begin_streaming_parse
This commit is contained in:
@@ -453,8 +453,8 @@ bool JsonCommitRequestParser::parse(CommitRequest &request, char *data,
|
||||
if (!begin_streaming_parse(request)) {
|
||||
return false;
|
||||
}
|
||||
parse_chunk(request, data, len);
|
||||
finish_streaming_parse(request);
|
||||
parse_chunk(data, len);
|
||||
finish_streaming_parse();
|
||||
|
||||
return !has_parse_error() && !request.leader_id().empty() &&
|
||||
parser_context_->has_read_version_been_set;
|
||||
@@ -481,8 +481,7 @@ bool JsonCommitRequestParser::begin_streaming_parse(CommitRequest &request) {
|
||||
}
|
||||
|
||||
JsonCommitRequestParser::ParseStatus
|
||||
JsonCommitRequestParser::parse_chunk(CommitRequest &request, char *data,
|
||||
size_t len) {
|
||||
JsonCommitRequestParser::parse_chunk(char *data, size_t len) {
|
||||
if (!json_parser_ || !parser_context_) {
|
||||
return ParseStatus::Error;
|
||||
}
|
||||
@@ -495,7 +494,6 @@ JsonCommitRequestParser::parse_chunk(CommitRequest &request, char *data,
|
||||
return ParseStatus::Complete;
|
||||
}
|
||||
|
||||
current_request_ = &request;
|
||||
WeaselJsonStatus status = WeaselJsonParser_parse(json_parser_, data, len);
|
||||
|
||||
switch (status) {
|
||||
@@ -514,7 +512,7 @@ JsonCommitRequestParser::parse_chunk(CommitRequest &request, char *data,
|
||||
}
|
||||
|
||||
JsonCommitRequestParser::ParseStatus
|
||||
JsonCommitRequestParser::finish_streaming_parse(CommitRequest &request) {
|
||||
JsonCommitRequestParser::finish_streaming_parse() {
|
||||
if (!json_parser_ || !parser_context_) {
|
||||
return ParseStatus::Error;
|
||||
}
|
||||
@@ -523,15 +521,13 @@ JsonCommitRequestParser::finish_streaming_parse(CommitRequest &request) {
|
||||
return ParseStatus::Error;
|
||||
}
|
||||
|
||||
current_request_ = &request;
|
||||
|
||||
// Signal end of input
|
||||
WeaselJsonStatus status = WeaselJsonParser_parse(json_parser_, nullptr, 0);
|
||||
|
||||
if (status == WeaselJson_OK && parser_context_->parse_complete &&
|
||||
!parser_context_->parse_error) {
|
||||
// Clear the memory used only during parsing
|
||||
parser_context_->reset_arena_memory(&request.arena());
|
||||
parser_context_->reset_arena_memory(¤t_request_->arena());
|
||||
return ParseStatus::Complete;
|
||||
} else {
|
||||
parser_context_->parse_error =
|
||||
|
||||
Reference in New Issue
Block a user