|  | @@ -50,8 +50,12 @@ inline bool CodedInputStream::InternalReadStringInline(string* buffer,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (BufferSize() >= size) {
 | 
	
		
			
				|  |  |      STLStringResizeUninitialized(buffer, size);
 | 
	
		
			
				|  |  | -    memcpy(string_as_array(buffer), buffer_, size);
 | 
	
		
			
				|  |  | -    Advance(size);
 | 
	
		
			
				|  |  | +    // When buffer is empty, string_as_array(buffer) will return NULL but memcpy
 | 
	
		
			
				|  |  | +    // requires non-NULL pointers even when size is 0. Hench this check.
 | 
	
		
			
				|  |  | +    if (size > 0) {
 | 
	
		
			
				|  |  | +      memcpy(string_as_array(buffer), buffer_, size);
 | 
	
		
			
				|  |  | +      Advance(size);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      return true;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 |