Try to make scope info logging more robust.

Add checks for validity of Vehicle ptrs in scope_dumper::VehicleInfo.
In Unix mode, try to handle SIGSEGVs when dumping scope info.
This commit is contained in:
Jonathan G Rennison
2016-02-25 19:21:06 +00:00
parent 0062881a46
commit cbc35e8aae
4 changed files with 57 additions and 0 deletions

View File

@@ -56,10 +56,18 @@ const char *scope_dumper::VehicleInfo(const Vehicle *v)
const char *last = lastof(this->buffer);
if (v) {
b += seprintf(b, last, "veh: %u: (", v->index);
if (Vehicle::GetIfValid(v->index) != v) {
b += seprintf(b, last, "INVALID PTR: %p)", v);
return this->buffer;
}
SetDParam(0, v->index);
b = GetString(b, STR_VEHICLE_NAME, last);
if (v->First() && v->First() != v) {
b += seprintf(b, last, "), front: %u: (", v->First()->index);
if (Vehicle::GetIfValid(v->First()->index) != v->First()) {
b += seprintf(b, last, "INVALID PTR: %p)", v->First());
return this->buffer;
}
SetDParam(0, v->First()->index);
b = GetString(b, STR_VEHICLE_NAME, last);
}