-
Notifications
You must be signed in to change notification settings - Fork 6k
Support empty strings and vectors in standard codec #12974
Conversation
Fixes flutter#41993 Currently an empty string or vector will call through to WriteBytes which asserts that the number of bytes it is being asked to write is strictly positive. Instead we should not call WriteBytes if the length is zero. Similarly, when we read, we don't need to call out if the length is zero.
| if (length == 0) { | ||
| return EncodableValue(list_value); | ||
| } | ||
| list_value.reserve(length); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this causing a failure too? I think reserve(0) is just a no-op, and the for loop would be no-op as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, I was just being over cautious.
| case EncodableValue::Type::kString: { | ||
| const auto& string_value = value.StringValue(); | ||
| size_t size = string_value.size(); | ||
| WriteSize(size, stream); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be included in the if statement below?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No we always want to write the size because the format specifies type|size|contents and the reading code needs to read that zero to be able to decode an empty string.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
makes sense, thanks!
|
Any update on when this will get merged? |
[email protected]:flutter/engine.git/compare/540fc977bb6b...5e6c005 git log 540fc97..5e6c005 --no-merges --oneline 2019-10-16 [email protected] Roll src/third_party/skia 083a75d6762c..59e72b71b5cf (1 commits) (flutter/engine#13169) 2019-10-16 [email protected] Roll src/third_party/dart 4131d3d7c4...41b65b27c2 (28 commits) (flutter/engine#13163) 2019-10-16 [email protected] Roll src/third_party/skia 7274850f96f2..083a75d6762c (1 commits) (flutter/engine#13168) 2019-10-16 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 5I4Iw... to oTVah... (flutter/engine#13167) 2019-10-16 [email protected] Roll fuchsia/sdk/core/mac-amd64 from qpzUe... to KVDL4... (flutter/engine#13166) 2019-10-16 [email protected] Roll src/third_party/skia 634d15032d37..7274850f96f2 (3 commits) (flutter/engine#13165) 2019-10-16 [email protected] Move surface-based SceneBuilder implementation under surface/ (flutter/engine#13159) 2019-10-16 [email protected] Roll src/third_party/skia ba8752f37dab..634d15032d37 (2 commits) (flutter/engine#13164) 2019-10-16 [email protected] Revert "Issue 13238: on iOS, force an orientation change when the current orientation is not allowed" (flutter/engine#13160) 2019-10-15 [email protected] Roll buildroot to pull in static thread safety analysis options. (flutter/engine#13155) 2019-10-15 [email protected] Roll src/third_party/skia fb6a1abe4567..ba8752f37dab (8 commits) (flutter/engine#13156) 2019-10-15 [email protected] Make the Dart isolate constructor private. (flutter/engine#13153) 2019-10-15 [email protected] Revert "Upgrades the ICU version to 64.2 (#13123)" (flutter/engine#13146) 2019-10-15 [email protected] Issue 13238: on iOS, force an orientation change when the current orientation is not allowed (flutter/engine#12295) 2019-10-15 [email protected] Allow embedders to specify a render task runner description. (flutter/engine#13124) 2019-10-15 [email protected] Roll fuchsia/sdk/core/linux-amd64 from Jv4XM... to 5I4Iw... (flutter/engine#13150) 2019-10-15 [email protected] Roll fuchsia/sdk/core/mac-amd64 from i5xD1... to qpzUe... (flutter/engine#13149) 2019-10-15 [email protected] Roll src/third_party/dart fc933312f7..4131d3d7c4 (3 commits) 2019-10-15 [email protected] Document //flutter/runtime/dart_vm (flutter/engine#13144) 2019-10-15 [email protected] Revert "Enable/tweak web sdk source maps (#13141)" (flutter/engine#13148) 2019-10-15 [email protected] Merge the Fuchsia frontend_server build script into the new flutter_frontend_server target (flutter/engine#13145) 2019-10-15 [email protected] Add `flutter_tester` binary to the CIPD package (flutter/engine#13143) 2019-10-15 [email protected] Roll src/third_party/skia f22c57ddcc8c..fb6a1abe4567 (2 commits) (flutter/engine#13142) 2019-10-15 [email protected] Enable/tweak web sdk source maps (flutter/engine#13141) 2019-10-15 [email protected] Upgrades the ICU version to 64.2 (flutter/engine#13123) 2019-10-15 [email protected] [frontend_server] Include bytecode generation in the training run. (flutter/engine#13126) 2019-10-15 [email protected] Support empty strings and vectors in standard codec (flutter/engine#12974) 2019-10-15 [email protected] Roll src/third_party/dart 50f7ae9c5d..fc933312f7 (2 commits) 2019-10-15 [email protected] Roll src/third_party/skia 55f9cba6e2e7..f22c57ddcc8c (1 commits) (flutter/engine#13136) 2019-10-15 [email protected] Roll fuchsia/sdk/core/linux-amd64 from xRgq0... to Jv4XM... (flutter/engine#13135) 2019-10-15 [email protected] Roll fuchsia/sdk/core/mac-amd64 from Lk7iT... to i5xD1... (flutter/engine#13134) 2019-10-15 [email protected] Roll src/third_party/skia 858cf233ef71..55f9cba6e2e7 (3 commits) (flutter/engine#13133) 2019-10-15 [email protected] Roll src/third_party/dart 70a7ef3f58..50f7ae9c5d (18 commits) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: ...
[email protected]:flutter/engine.git/compare/540fc977bb6b...5e6c005 git log 540fc97..5e6c005 --no-merges --oneline 2019-10-16 [email protected] Roll src/third_party/skia 083a75d6762c..59e72b71b5cf (1 commits) (flutter/engine#13169) 2019-10-16 [email protected] Roll src/third_party/dart 4131d3d7c4...41b65b27c2 (28 commits) (flutter/engine#13163) 2019-10-16 [email protected] Roll src/third_party/skia 7274850f96f2..083a75d6762c (1 commits) (flutter/engine#13168) 2019-10-16 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 5I4Iw... to oTVah... (flutter/engine#13167) 2019-10-16 [email protected] Roll fuchsia/sdk/core/mac-amd64 from qpzUe... to KVDL4... (flutter/engine#13166) 2019-10-16 [email protected] Roll src/third_party/skia 634d15032d37..7274850f96f2 (3 commits) (flutter/engine#13165) 2019-10-16 [email protected] Move surface-based SceneBuilder implementation under surface/ (flutter/engine#13159) 2019-10-16 [email protected] Roll src/third_party/skia ba8752f37dab..634d15032d37 (2 commits) (flutter/engine#13164) 2019-10-16 [email protected] Revert "Issue 13238: on iOS, force an orientation change when the current orientation is not allowed" (flutter/engine#13160) 2019-10-15 [email protected] Roll buildroot to pull in static thread safety analysis options. (flutter/engine#13155) 2019-10-15 [email protected] Roll src/third_party/skia fb6a1abe4567..ba8752f37dab (8 commits) (flutter/engine#13156) 2019-10-15 [email protected] Make the Dart isolate constructor private. (flutter/engine#13153) 2019-10-15 [email protected] Revert "Upgrades the ICU version to 64.2 (flutter#13123)" (flutter/engine#13146) 2019-10-15 [email protected] Issue 13238: on iOS, force an orientation change when the current orientation is not allowed (flutter/engine#12295) 2019-10-15 [email protected] Allow embedders to specify a render task runner description. (flutter/engine#13124) 2019-10-15 [email protected] Roll fuchsia/sdk/core/linux-amd64 from Jv4XM... to 5I4Iw... (flutter/engine#13150) 2019-10-15 [email protected] Roll fuchsia/sdk/core/mac-amd64 from i5xD1... to qpzUe... (flutter/engine#13149) 2019-10-15 [email protected] Roll src/third_party/dart fc933312f7..4131d3d7c4 (3 commits) 2019-10-15 [email protected] Document //flutter/runtime/dart_vm (flutter/engine#13144) 2019-10-15 [email protected] Revert "Enable/tweak web sdk source maps (flutter#13141)" (flutter/engine#13148) 2019-10-15 [email protected] Merge the Fuchsia frontend_server build script into the new flutter_frontend_server target (flutter/engine#13145) 2019-10-15 [email protected] Add `flutter_tester` binary to the CIPD package (flutter/engine#13143) 2019-10-15 [email protected] Roll src/third_party/skia f22c57ddcc8c..fb6a1abe4567 (2 commits) (flutter/engine#13142) 2019-10-15 [email protected] Enable/tweak web sdk source maps (flutter/engine#13141) 2019-10-15 [email protected] Upgrades the ICU version to 64.2 (flutter/engine#13123) 2019-10-15 [email protected] [frontend_server] Include bytecode generation in the training run. (flutter/engine#13126) 2019-10-15 [email protected] Support empty strings and vectors in standard codec (flutter/engine#12974) 2019-10-15 [email protected] Roll src/third_party/dart 50f7ae9c5d..fc933312f7 (2 commits) 2019-10-15 [email protected] Roll src/third_party/skia 55f9cba6e2e7..f22c57ddcc8c (1 commits) (flutter/engine#13136) 2019-10-15 [email protected] Roll fuchsia/sdk/core/linux-amd64 from xRgq0... to Jv4XM... (flutter/engine#13135) 2019-10-15 [email protected] Roll fuchsia/sdk/core/mac-amd64 from Lk7iT... to i5xD1... (flutter/engine#13134) 2019-10-15 [email protected] Roll src/third_party/skia 858cf233ef71..55f9cba6e2e7 (3 commits) (flutter/engine#13133) 2019-10-15 [email protected] Roll src/third_party/dart 70a7ef3f58..50f7ae9c5d (18 commits) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: ...
Fixes #41993
Currently an empty string or vector will call through to WriteBytes
which asserts that the number of bytes it is being asked to write is
strictly positive. Instead we should not call WriteBytes if the length
is zero.
Similarly, when we read, we don't need to call out if the length is
zero.