pbc
pbc copied to clipboard
optional默认值不打包可能会导致的问题
假设有这样的一个简单结构 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的部分代码是否需要修改?
pbc_wmessage_integer 方法中 注释掉 if (low == f->default_v->integer.low && hi == f->default_v->integer.hi) { return 0; } 就可以了 ,但是我不知道这个东西当初是为啥这样写的,是为了避免设么问题么
为了省空间吧,但这个bug很严重