fix: Pavo 布局自检期望值错误(80→88)——上一轮审查时手数错了指针数
用户 Windows 实测触发 HitiCardPrintParameter 布局 assert。mac 实测 sizeOf 坐实:HitiCardPrintParameter=88(4×uint32 + 8×uint8 + 8×pointer = 24+64, 8 个指针=front BGR/K/O + back BGR/K/O + Reserve×2),其余三个(32/16/48) 正确——结构体布局本身与 C# 实机版一致,错的只是 assert 里手写的期望值 80。 顺带:此错误当时被 pavo_isolate_test 的 catch 转 offline 文案掩盖(断言只查 unsendable),新增 test/pavo_ffi_layout_test 直接 expect 四个 sizeOf, 布局回归在 mac 上即红,不必等 Windows 实机。15 测试全过。
This commit is contained in:
1 parent
e00086c01c
commit
1deb3125be
2 files changed
+17
-1
No files matched your search
@@ -21,7 +21,7 @@ class PavoApi {
|
||||
_printOneCard = _tryPrintOneCard('PAVO_PrintOneCardW') ?? _tryPrintOneCard('PAVO_PrintOneCard')!;
|
||||
// 布局自检:Dart Struct 按 C ABI 自然对齐,与 C# 版(已实机验证)的
|
||||
// sizeof 逐一核对;首个 Windows 环境首跑即暴露对齐差异
|
||||
assert(sizeOf<HitiCardPrintParameter>() == 80, 'HitiCardPrintParameter 布局异常');
|
||||
assert(sizeOf<HitiCardPrintParameter>() == 88, 'HitiCardPrintParameter 布局异常');
|
||||
assert(sizeOf<GdiBitmap>() == 32, 'GdiBitmap 布局异常');
|
||||
assert(sizeOf<HitiHeatingEnergy>() == 16, 'HitiHeatingEnergy 布局异常');
|
||||
assert(sizeOf<HitiSettings>() == 48, 'HitiSettings 布局异常');
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:desktop_plugin/print/pavo/pavo_ffi.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
/// Pavo ffi 结构体布局守护:与 C# 实机验证版的 sizeof 逐一核对。
|
||||
/// 布局错误在 mac 上跑本测试即红,不必等 Windows 实机。
|
||||
/// (HitiCardPrintParameter = 4×uint32 + 8×uint8 + 8×pointer = 24+64 = 88)
|
||||
void main() {
|
||||
test('Pavo ffi 结构体布局与 C ABI 一致', () {
|
||||
expect(sizeOf<HitiCardPrintParameter>(), 88);
|
||||
expect(sizeOf<GdiBitmap>(), 32);
|
||||
expect(sizeOf<HitiHeatingEnergy>(), 16);
|
||||
expect(sizeOf<HitiSettings>(), 48);
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user