diff --git a/bin/internal/engine.version b/bin/internal/engine.version index ac63aea80a..7e82467506 100644 --- a/bin/internal/engine.version +++ b/bin/internal/engine.version @@ -1 +1 @@ -f741647d4977410ff8e2c02160eaa02bcb1f0a2b +784e9756720f7f6daa15c95ba3df6215bb54783f diff --git a/packages/flutter/lib/src/foundation/serialization.dart b/packages/flutter/lib/src/foundation/serialization.dart index 822d916aa0..d43d5d8da5 100644 --- a/packages/flutter/lib/src/foundation/serialization.dart +++ b/packages/flutter/lib/src/foundation/serialization.dart @@ -55,6 +55,7 @@ class WriteBuffer { /// Write an Float64 into the buffer. void putFloat64(double value) { + _alignTo(8); _eightBytes.setFloat64(0, value, Endianness.HOST_ENDIAN); _buffer.addAll(_eightBytesAsList); } @@ -150,6 +151,7 @@ class ReadBuffer { /// Reads a Float64 from the buffer. double getFloat64() { + _alignTo(8); final double value = data.getFloat64(_position, Endianness.HOST_ENDIAN); _position += 8; return value; diff --git a/packages/flutter/test/services/message_codecs_test.dart b/packages/flutter/test/services/message_codecs_test.dart index 176971d22d..ce56652312 100644 --- a/packages/flutter/test/services/message_codecs_test.dart +++ b/packages/flutter/test/services/message_codecs_test.dart @@ -177,6 +177,14 @@ void main() { ]; _checkEncodeDecode(standard, message); }); + test('should align doubles to 8 bytes', () { + _checkEncoding( + standard, + 1.0, + [6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0xf0, 0x3f], + ); + }); }); }