xtne6f / EDCB

BonDriver based multifunctional EPG software
Other
165 stars 37 forks source link

reserveIDが65535を超えるとLuaScriptのChgReserveDataが常に失敗する #45

Closed fushihara closed 3 years ago

fushihara commented 3 years ago

RESERVE_DATA.reserveID プロパティはDWORD型ですが、 https://github.com/xtne6f/EDCB/blob/201bf29aeb3f12000db0537e58eb9ede70aa261d/Common/StructDef.h#L59

CEpgTimerSrvMain::FetchReserveData でWORD型にキャストしています。(LuaHelp::get_intも桁数が足りていない?) https://github.com/xtne6f/EDCB/blob/201bf29aeb3f12000db0537e58eb9ede70aa261d/EpgTimerSrv/EpgTimerSrv/EpgTimerSrvMain.cpp#L4368

録画予約数が65536件を超えた場合、EpgTimerSrvの中でreserveIDの値が変わってしまうのでLuaScriptからChgReserveDataの呼び出しが失敗してしまいます。 (予約を新規作成する時はreserveIDの値は使っていないので成功する)

xtne6f commented 3 years ago

ありがとうございます。 完全にミスです (たぶん前行のeventID等からの流れで書いちゃったんだと思う)。 LuaHelp::get_intは符号付き32bitなので値域については大丈夫です。