|  |  | @ -60,13 +60,13 @@ df::job *DFHack::Job::cloneJobStruct(df::job *job, bool keepEverything) | 
			
		
	
		
		
			
				
					
					|  |  |  |     CHECK_NULL_POINTER(job); |  |  |  |     CHECK_NULL_POINTER(job); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     df::job *pnew = new df::job(*job); |  |  |  |     df::job *pnew = new df::job(*job); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     if ( !keepEverything ) { |  |  |  |     if ( !keepEverything ) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Clean out transient fields
 |  |  |  |         // Clean out transient fields
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         pnew->flags.whole = 0; |  |  |  |         pnew->flags.whole = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         pnew->flags.bits.repeat = job->flags.bits.repeat; |  |  |  |         pnew->flags.bits.repeat = job->flags.bits.repeat; | 
			
		
	
		
		
			
				
					
					|  |  |  |         pnew->flags.bits.suspend = job->flags.bits.suspend; |  |  |  |         pnew->flags.bits.suspend = job->flags.bits.suspend; | 
			
		
	
		
		
			
				
					
					|  |  |  |          |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         pnew->completion_timer = -1; |  |  |  |         pnew->completion_timer = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     pnew->list_link = NULL; |  |  |  |     pnew->list_link = NULL; | 
			
		
	
	
		
		
			
				
					|  |  | @ -75,24 +75,24 @@ df::job *DFHack::Job::cloneJobStruct(df::job *job, bool keepEverything) | 
			
		
	
		
		
			
				
					
					|  |  |  |     //pnew->specific_refs.clear();
 |  |  |  |     //pnew->specific_refs.clear();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     pnew->general_refs.clear(); |  |  |  |     pnew->general_refs.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     //pnew->job_items.clear();
 |  |  |  |     //pnew->job_items.clear();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     if ( keepEverything ) { |  |  |  |     if ( keepEverything ) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         for ( int a = 0; a < pnew->items.size(); a++ ) |  |  |  |         for ( size_t a = 0; a < pnew->items.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             pnew->items[a] = new df::job_item_ref(*pnew->items[a]); |  |  |  |             pnew->items[a] = new df::job_item_ref(*pnew->items[a]); | 
			
		
	
		
		
			
				
					
					|  |  |  |         for ( int a = 0; a < pnew->specific_refs.size(); a++ ) |  |  |  |         for ( size_t a = 0; a < pnew->specific_refs.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             pnew->specific_refs[a] = new df::specific_ref(*pnew->specific_refs[a]); |  |  |  |             pnew->specific_refs[a] = new df::specific_ref(*pnew->specific_refs[a]); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } else { |  |  |  |     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |         pnew->items.clear(); |  |  |  |         pnew->items.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         pnew->specific_refs.clear(); |  |  |  |         pnew->specific_refs.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     for ( int a = 0; a < pnew->job_items.size(); a++ ) |  |  |  |     for ( size_t a = 0; a < pnew->job_items.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         pnew->job_items[a] = new df::job_item(*pnew->job_items[a]); |  |  |  |         pnew->job_items[a] = new df::job_item(*pnew->job_items[a]); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     for ( int a = 0; a < job->general_refs.size(); a++ ) |  |  |  |     for ( size_t a = 0; a < job->general_refs.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         if ( keepEverything || job->general_refs[a]->getType() != df::enums::general_ref_type::UNIT_WORKER ) |  |  |  |         if ( keepEverything || job->general_refs[a]->getType() != df::enums::general_ref_type::UNIT_WORKER ) | 
			
		
	
		
		
			
				
					
					|  |  |  |             pnew->general_refs.push_back(job->general_refs[a]->clone()); |  |  |  |             pnew->general_refs.push_back(job->general_refs[a]->clone()); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     return pnew; |  |  |  |     return pnew; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -106,16 +106,16 @@ void DFHack::Job::deleteJobStruct(df::job *job, bool keptEverything) | 
			
		
	
		
		
			
				
					
					|  |  |  |         assert(!job->list_link && job->items.empty() && job->specific_refs.empty()); |  |  |  |         assert(!job->list_link && job->items.empty() && job->specific_refs.empty()); | 
			
		
	
		
		
			
				
					
					|  |  |  |     else |  |  |  |     else | 
			
		
	
		
		
			
				
					
					|  |  |  |         assert(!job->list_link); |  |  |  |         assert(!job->list_link); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     if ( keptEverything ) { |  |  |  |     if ( keptEverything ) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         for ( int a = 0; a < job->items.size(); a++ ) |  |  |  |         for ( size_t a = 0; a < job->items.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             delete job->items[a]; |  |  |  |             delete job->items[a]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         for ( int a = 0; a < job->specific_refs.size(); a++ ) |  |  |  |         for ( size_t a = 0; a < job->specific_refs.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             delete job->specific_refs[a]; |  |  |  |             delete job->specific_refs[a]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     for ( int a = 0; a < job->job_items.size(); a++ ) |  |  |  |     for ( size_t a = 0; a < job->job_items.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         delete job->job_items[a]; |  |  |  |         delete job->job_items[a]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     for ( int a = 0; a < job->general_refs.size(); a++ ) |  |  |  |     for ( size_t a = 0; a < job->general_refs.size(); a++ ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         delete job->general_refs[a]; |  |  |  |         delete job->general_refs[a]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     delete job; |  |  |  |     delete job; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |