Commit 46aeb2ae authored by yangguo's avatar yangguo Committed by Commit bot

[json] fix encoding change for two-byte gap strings.

R=mstarzinger@chromium.org
BUG=chromium:613570

Review-Url: https://codereview.chromium.org/1997003002
Cr-Commit-Position: refs/heads/master@{#36433}
parent 4267a2eb
...@@ -198,7 +198,8 @@ BasicJsonStringifier::BasicJsonStringifier(Isolate* isolate, Handle<String> gap) ...@@ -198,7 +198,8 @@ BasicJsonStringifier::BasicJsonStringifier(Isolate* isolate, Handle<String> gap)
stack_ = factory()->NewJSArray(8); stack_ = factory()->NewJSArray(8);
int gap_length = gap->length(); int gap_length = gap->length();
if (gap_length != 0) { if (gap_length != 0) {
String::Flatten(gap); gap = String::Flatten(gap);
if (gap->IsTwoByteRepresentation()) builder_.ChangeEncoding();
DisallowHeapAllocation no_gc; DisallowHeapAllocation no_gc;
String::FlatContent flat = gap->GetFlatContent(); String::FlatContent flat = gap->GetFlatContent();
gap_ = NewArray<uc16>(gap_length + 1); gap_ = NewArray<uc16>(gap_length + 1);
...@@ -206,7 +207,6 @@ BasicJsonStringifier::BasicJsonStringifier(Isolate* isolate, Handle<String> gap) ...@@ -206,7 +207,6 @@ BasicJsonStringifier::BasicJsonStringifier(Isolate* isolate, Handle<String> gap)
CopyChars(gap_, flat.ToOneByteVector().start(), gap_length); CopyChars(gap_, flat.ToOneByteVector().start(), gap_length);
} else { } else {
CopyChars(gap_, flat.ToUC16Vector().start(), gap_length); CopyChars(gap_, flat.ToUC16Vector().start(), gap_length);
builder_.ChangeEncoding();
} }
gap_[gap_length] = '\0'; gap_[gap_length] = '\0';
} else { } else {
......
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
assertEquals("[\n\u26031,\n\u26032\n]",
JSON.stringify([1, 2], null, "\u2603"));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment