diff options
Diffstat (limited to 'user/xsettingsd/endian.patch')
-rw-r--r-- | user/xsettingsd/endian.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/user/xsettingsd/endian.patch b/user/xsettingsd/endian.patch new file mode 100644 index 000000000..c5ac01b85 --- /dev/null +++ b/user/xsettingsd/endian.patch @@ -0,0 +1,76 @@ +--- xsettingsd-1.0.2/setting_test.cc.old 2021-01-08 12:00:13.000000000 -0600 ++++ xsettingsd-1.0.2/setting_test.cc 2022-06-05 22:19:35.511364966 -0500 +@@ -53,14 +53,20 @@ + IntegerSetting setting(5); + setting.UpdateSerial(NULL, 3); + ASSERT_TRUE(setting.Write("name", &writer)); +- // TODO: Won't work on big-endian systems. + const char expected[] = { + 0x0, // type + 0x0, // unused ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ 0x0, 0x4, // name-len ++ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding) ++ 0x0, 0x0, 0x0, 0x3, // serial ++ 0x0, 0x0, 0x0, 0x5, // value ++#else + 0x4, 0x0, // name-len + 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding) + 0x3, 0x0, 0x0, 0x0, // serial + 0x5, 0x0, 0x0, 0x0, // value ++#endif + }; + ASSERT_EQ(sizeof(expected), writer.bytes_written()); + EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected)); +@@ -74,15 +80,22 @@ + StringSetting setting("testing"); + setting.UpdateSerial(NULL, 5); + ASSERT_TRUE(setting.Write("setting", &writer)); +- // TODO: Won't work on big-endian systems. + const char expected[] = { + 0x1, // type + 0x0, // unused ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ 0x0, 0x7, // name-len ++ 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, // "setting" (name) ++ 0x0, // padding ++ 0x0, 0x0, 0x0, 0x5, // serial ++ 0x0, 0x0, 0x0, 0x7, // value-len ++#else + 0x7, 0x0, // name-len + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, // "setting" (name) + 0x0, // padding + 0x5, 0x0, 0x0, 0x0, // serial + 0x7, 0x0, 0x0, 0x0, // value-len ++#endif + 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, // "testing" (value) + 0x0, // padding + }; +@@ -98,10 +111,18 @@ + ColorSetting setting(32768, 65535, 0, 255); + setting.UpdateSerial(NULL, 2); + ASSERT_TRUE(setting.Write("name", &writer)); +- // TODO: Won't work on big-endian systems. + const char expected[] = { + 0x2, // type + 0x0, // unused ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ 0x0, 0x4, // name-len ++ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding) ++ 0x0, 0x0, 0x0, 0x2, // serial ++ 0x80, 0x0, // red ++ 0x0, 0x0, // blue (yes, the order is strange) ++ 0xff, 0xff, // green ++ 0x0, 0xff, // alpha ++#else + 0x4, 0x0, // name-len + 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding) + 0x2, 0x0, 0x0, 0x0, // serial +@@ -109,6 +130,7 @@ + 0x0, 0x0, // blue (yes, the order is strange) + 0xff, 0xff, // green + 0xff, 0x0, // alpha ++#endif + }; + ASSERT_EQ(sizeof(expected), writer.bytes_written()); + EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected)); |