|  | @@ -775,10 +775,10 @@ class FileDescriptorTables {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    SymbolsByParentMap symbols_by_parent_;
 | 
	
		
			
				|  |  |    mutable FieldsByNameMap fields_by_lowercase_name_;
 | 
	
		
			
				|  |  | -  mutable FieldsByNameMap* fields_by_lowercase_name_tmp_;
 | 
	
		
			
				|  |  | +  std::unique_ptr<FieldsByNameMap> fields_by_lowercase_name_tmp_;
 | 
	
		
			
				|  |  |    mutable GoogleOnceDynamic fields_by_lowercase_name_once_;
 | 
	
		
			
				|  |  |    mutable FieldsByNameMap fields_by_camelcase_name_;
 | 
	
		
			
				|  |  | -  mutable FieldsByNameMap* fields_by_camelcase_name_tmp_;
 | 
	
		
			
				|  |  | +  std::unique_ptr<FieldsByNameMap> fields_by_camelcase_name_tmp_;
 | 
	
		
			
				|  |  |    mutable GoogleOnceDynamic fields_by_camelcase_name_once_;
 | 
	
		
			
				|  |  |    FieldsByNumberMap fields_by_number_;  // Not including extensions.
 | 
	
		
			
				|  |  |    EnumValuesByNumberMap enum_values_by_number_;
 | 
	
	
		
			
				|  | @@ -1146,10 +1146,8 @@ bool DescriptorPool::Tables::AddFile(const FileDescriptor* file) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void FileDescriptorTables::FinalizeTables() {
 | 
	
		
			
				|  |  |    // Clean up the temporary maps used by AddFieldByStylizedNames().
 | 
	
		
			
				|  |  | -  delete fields_by_lowercase_name_tmp_;
 | 
	
		
			
				|  |  | -  fields_by_lowercase_name_tmp_ = NULL;
 | 
	
		
			
				|  |  | -  delete fields_by_camelcase_name_tmp_;
 | 
	
		
			
				|  |  | -  fields_by_camelcase_name_tmp_ = NULL;
 | 
	
		
			
				|  |  | +  fields_by_lowercase_name_tmp_ = nullptr;
 | 
	
		
			
				|  |  | +  fields_by_camelcase_name_tmp_ = nullptr;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void FileDescriptorTables::AddFieldByStylizedNames(
 | 
	
	
		
			
				|  | @@ -1164,7 +1162,7 @@ void FileDescriptorTables::AddFieldByStylizedNames(
 | 
	
		
			
				|  |  |    // entries from fields_by_number_.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    PointerStringPair lowercase_key(parent, field->lowercase_name().c_str());
 | 
	
		
			
				|  |  | -  if (!InsertIfNotPresent(fields_by_lowercase_name_tmp_, lowercase_key,
 | 
	
		
			
				|  |  | +  if (!InsertIfNotPresent(fields_by_lowercase_name_tmp_.get(), lowercase_key,
 | 
	
		
			
				|  |  |                            field)) {
 | 
	
		
			
				|  |  |      InsertIfNotPresent(
 | 
	
		
			
				|  |  |          &fields_by_lowercase_name_, lowercase_key,
 | 
	
	
		
			
				|  | @@ -1172,7 +1170,7 @@ void FileDescriptorTables::AddFieldByStylizedNames(
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    PointerStringPair camelcase_key(parent, field->camelcase_name().c_str());
 | 
	
		
			
				|  |  | -  if (!InsertIfNotPresent(fields_by_camelcase_name_tmp_, camelcase_key,
 | 
	
		
			
				|  |  | +  if (!InsertIfNotPresent(fields_by_camelcase_name_tmp_.get(), camelcase_key,
 | 
	
		
			
				|  |  |                            field)) {
 | 
	
		
			
				|  |  |      InsertIfNotPresent(
 | 
	
		
			
				|  |  |          &fields_by_camelcase_name_, camelcase_key,
 |