二七王:Balance.readystate 改为深拷贝下发,扩展深拷贝守卫测试
o_desk.prepare 是 do_prepare 就地置 1、do_new_paiju 就地重建的活数组, 整根挂进 deskinfo.Balance.readystate 会让「已发出的包」随后续准备操作被回改。 与 get_playproc / get_seatlist / get_pushlist / get_bottomcards 同一条标准,改为下发副本。 test_rpc 扩展既有的深拷贝守卫:正面(内容逐格相等)+ 非空转(活数组确实变过) + 反面(已发出的包不被回改、改副本不影响本体)。反向验证:去掉 .concat() 后两条断言转红。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -215,7 +215,12 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
case 6: //结算
|
||||
deskinfo.Balance = {};
|
||||
//玩家的准备状态
|
||||
deskinfo.Balance.readystate = o_room.o_desk.prepare;
|
||||
//【返回副本】o_room.o_desk.prepare 是一张全程就地改写的活数组
|
||||
//(do_prepare 每次准备就地把某一格置 1,do_new_paiju 又就地重建),
|
||||
//把它本体挂进下发包会让「已发出的包」随后续准备操作被回改。
|
||||
//与 get_playproc / get_seatlist / get_pushlist / get_bottomcards 同一条标准:
|
||||
//平台真实链路虽然立刻序列化看不出来,但这是隐患,不留。
|
||||
deskinfo.Balance.readystate = o_room.o_desk.prepare.concat();
|
||||
if (o_room.o_desk.prepare[seat] == 0){
|
||||
//结算面板的三件套:与 jiesuan 推送【同源同值】(都取 get_paiju_account 末尾
|
||||
//冻结的那份快照)。只给 aset 会让「结算面板还开着时断线重连/硬刷新」丢掉
|
||||
|
||||
Reference in New Issue
Block a user