simutrans r2015, pak64
Problem:
- If there is a convoy in train depot, monorail depot or air depot...
-- Crash when exit the game.
-- Crash when sell this convoy.
How to reproduce:
1. Load attached savegame
2. Open train depot
3. Do one of these
a. Click "sell" button.
b. Exit the game
Result:
Crash.
Note:
This problem happened with train, monorail and airplane depot.
This problem didn't happen with car and ship depot.
Quote
Message: depot_frame_t::build_vehicle_lists(): finally 20 passenger vehicle, 38 engines, 23 good wagons
Message: waggon_t::setze_convoi(): new=00000000 old=05BAE4C0
FATAL ERROR: vector_tpl<T>::[]
index out of bounds: 1 not in 0..-1
Aborting program execution ...
I got that as well with linux r2014 and pak128 r100, exactly the same error message.
In r2016.
Problem still happens when I sell an airplane in air depot.
EDIT: It also crash when I click "start" button in air depot window.
In r2018.
Problem still happens.
- Crash when I sell an airplane in air depot.
- Crash when I exit game, if there is an airplane in depot.
Not in my version ... unsure how to handle this.
I don't know the difference of these code, but when I used old code, crash didn't happen.
But compiler complained.
I hope this might help you.
In bool aircraft_t::block_reserver( uint32 start, uint32 end, bool reserve )
old code (r2009):
Quote
for( uint32 i=start; success && i<end && (sint32)i<=route->gib_max_n(); i++) {
new code (r2018):
Quote
for( uint32 i=start; success && i<end && i<=route->gib_max_n(); i++) {
warning for old code:
Quote
vehicle/simvehikel.cc: In member function `bool aircraft_t::block_reserver(uint32, uint32, bool)':
vehicle/simvehikel.cc:2899: warning: comparison between signed and unsigned integer expressions
This was part of a patch to reduce warnings. But, my reluctance to fix working stuff was also justified in this case :( This value will be signed again.
Crash didn't happen in r2020, seems to be solved this problem.
Thank you.