Fixed crash when loading a results file for an endurance race (and some possible others) in the race menu (Load button) (was a #139 / D30 regression)

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@2817 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 869e6e2a24c055be9b55d0e98b1a880e896a0fae
Former-commit-id: 1582d80ab49ac228c217ea3c9a11cf670a2b0be4
This commit is contained in:
pouillot 2010-09-28 20:03:45 +00:00
parent f968a7b040
commit df0cc9cf1d

View file

@ -294,21 +294,22 @@ rmDisplayStartRace(tRmInfo *info, void *startScr, void *abortScr, int start)
curRow = 0;
nCars = GfParmGetEltNb(params, RM_SECT_DRIVERS_RACING);
for (i = start; i < MIN(start + NMaxLines, nCars); i++) {
for (i = start; i < MIN(start + NMaxLines, nCars); i++)
{
/* Find starting driver's name */
sprintf(path, "%s/%d", RM_SECT_DRIVERS_RACING, i + 1);
name = GfParmGetStr(info->params, path, RM_ATTR_MODULE, "");
robotIdx = (int)GfParmGetNum(info->params, path, RM_ATTR_IDX, NULL, 0);
extended = GfParmGetNum(info->params, path, RM_ATTR_EXTENDED, NULL, 0);
extended = GfParmGetNum(info->params, path, RM_ATTR_EXTENDED, NULL, 0);
carName = NULL;
if( extended )
{
sprintf(path, "%s/%s/%d/%d", RM_SECT_DRIVERINFO, name, extended, robotIdx);
carName = GfParmGetStr(info->params, path, RM_ATTR_CARNAME, NULL);
}
else
{
if( extended )
{
sprintf(path, "%s/%s/%d/%d", RM_SECT_DRIVERINFO, name, extended, robotIdx);
carName = GfParmGetStr(info->params, path, RM_ATTR_CARNAME, NULL);
}
else
{
sprintf(path, "%sdrivers/%s/%s.xml", GetLocalDir(), name, name);
robhdle = GfParmReadFile(path, GFPARM_RMODE_STD);
if (!robhdle) {
@ -320,12 +321,11 @@ rmDisplayStartRace(tRmInfo *info, void *startScr, void *abortScr, int start)
sprintf(path, "%s/%s/%d", ROB_SECT_ROBOTS, ROB_LIST_INDEX, robotIdx);
name = GfParmGetStr(robhdle, path, ROB_ATTR_NAME, "<none>");
carName = GfParmGetStr(robhdle, path, ROB_ATTR_CAR, "");
GfParmReleaseHandle(robhdle);
}
}
}
if( carName )
{
if( carName )
{
sprintf(path, "cars/%s/%s.xml", carName, carName);
carHdle = GfParmReadFile(path, GFPARM_RMODE_STD);
carName = GfParmGetName(carHdle);
@ -339,9 +339,12 @@ rmDisplayStartRace(tRmInfo *info, void *startScr, void *abortScr, int start)
curRow = (curRow + 1) % rows;
y -= 15;
// Release robhdle only when no more need for read strings (like carname).
if (robhdle)
GfParmReleaseHandle(robhdle);
}
if (start > 0) {
prevStartRace.startScr = startScr;
prevStartRace.abortScr = abortScr;