|  | @@ -598,8 +598,13 @@ void FileGenerator::GenerateBuildDescriptors(io::Printer* printer) {
 | 
	
		
			
				|  |  |      // bytes in length". Declare a static array of characters rather than use a
 | 
	
		
			
				|  |  |      // string literal.
 | 
	
		
			
				|  |  |      if (breakdown_large_file && file_data.size() > 65535) {
 | 
	
		
			
				|  |  | +      // This has to be explicitly marked as a signed char because the generated
 | 
	
		
			
				|  |  | +      // code puts negative values in the array, and sometimes plain char is
 | 
	
		
			
				|  |  | +      // unsigned. That implicit narrowing conversion is not allowed in C++11.
 | 
	
		
			
				|  |  | +      // <http://stackoverflow.com/questions/4434140/narrowing-conversions-in-c0x-is-it-just-me-or-does-this-sound-like-a-breakin>
 | 
	
		
			
				|  |  | +      // has details on why.
 | 
	
		
			
				|  |  |        printer->Print(
 | 
	
		
			
				|  |  | -          "static const char descriptor[] = {\n");
 | 
	
		
			
				|  |  | +          "static const signed char descriptor[] = {\n");
 | 
	
		
			
				|  |  |        printer->Indent();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // Only write 25 bytes per line.
 |