src/engine.cpp
changeset 10314 9cfcdd5b5ddb
parent 9343 c30fd350dd8c
child 10382 d1d4452acbfc
equal deleted inserted replaced
10313:53b9d5708068 10314:9cfcdd5b5ddb
    13 #include "variables.h"
    13 #include "variables.h"
    14 #include "train.h"
    14 #include "train.h"
    15 #include "aircraft.h"
    15 #include "aircraft.h"
    16 #include "newgrf_cargo.h"
    16 #include "newgrf_cargo.h"
    17 #include "group.h"
    17 #include "group.h"
    18 #include "misc/autoptr.hpp"
       
    19 #include "strings_func.h"
    18 #include "strings_func.h"
    20 #include "gfx_func.h"
    19 #include "gfx_func.h"
    21 #include "functions.h"
    20 #include "functions.h"
    22 #include "window_func.h"
    21 #include "window_func.h"
    23 #include "date_func.h"
    22 #include "date_func.h"
   514 	if (er != NULL) {
   513 	if (er != NULL) {
   515 		if (flags & DC_EXEC) er->to = new_engine;
   514 		if (flags & DC_EXEC) er->to = new_engine;
   516 		return CommandCost();
   515 		return CommandCost();
   517 	}
   516 	}
   518 
   517 
   519 	er = new EngineRenew(old_engine, new_engine);
   518 	if (!EngineRenew::CanAllocateItem()) return CMD_ERROR;
   520 	if (er == NULL) return CMD_ERROR;
       
   521 	AutoPtrT<EngineRenew> er_auto_delete = er;
       
   522 
       
   523 
   519 
   524 	if (flags & DC_EXEC) {
   520 	if (flags & DC_EXEC) {
       
   521 		er = new EngineRenew(old_engine, new_engine);
   525 		er->group_id = group;
   522 		er->group_id = group;
   526 
   523 
   527 		/* Insert before the first element */
   524 		/* Insert before the first element */
   528 		er->next = (EngineRenew *)(*erl);
   525 		er->next = (EngineRenew *)(*erl);
   529 		*erl = (EngineRenewList)er;
   526 		*erl = (EngineRenewList)er;
   530 
       
   531 		er_auto_delete.Detach();
       
   532 	}
   527 	}
   533 
   528 
   534 	return CommandCost();
   529 	return CommandCost();
   535 }
   530 }
   536 
   531