pbc icon indicating copy to clipboard operation
pbc copied to clipboard

optional默认值不打包可能会导致的问题

Open zhust2003 opened this issue 8 years ago • 2 comments

假设有这样的一个简单结构 message TestMsg { optional int32 a = 1; optional int32 b = 2; } 在打包值 { a = 0, b = 2} 的情况下,默认只会序列化b这个值,不打包进入a值,因为他恰好等于默认值0 但是如果我服务端重新修改b值的,那么我这么操作 { a = 0, b = 0} ,那么服务端的这次序列化岂不是什么都没做了,客户端也不会如预期的重新修改b的值为0。

我觉得optinal打包需要打包传入的data结构,无论是否与默认值相同 pbc_wmessage_integer的部分代码是否需要修改?

zhust2003 avatar Jul 31 '17 09:07 zhust2003

pbc_wmessage_integer 方法中 注释掉 if (low == f->default_v->integer.low && hi == f->default_v->integer.hi) { return 0; } 就可以了 ,但是我不知道这个东西当初是为啥这样写的,是为了避免设么问题么

QuiQiJingFeng avatar May 30 '18 05:05 QuiQiJingFeng

为了省空间吧,但这个bug很严重

zxt5105515 avatar Feb 28 '20 06:02 zxt5105515