mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Use ints for the calculations rather than u_char, they could end up
signed.
This commit is contained in:
		
							
								
								
									
										9
									
								
								colour.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								colour.c
									
									
									
									
									
								
							@@ -313,6 +313,7 @@ colour_find_rgb(u_char r, u_char g, u_char b)
 | 
			
		||||
{
 | 
			
		||||
	struct colour_rgb	rgb = { .r = r, .g = g, .b = b }, *found;
 | 
			
		||||
	u_int			distance, lowest, colour, i;
 | 
			
		||||
	int			dr, dg, db;
 | 
			
		||||
 | 
			
		||||
	found = bsearch(&rgb, colour_to_256, nitems(colour_to_256),
 | 
			
		||||
	    sizeof colour_to_256[0], colour_cmp_rgb);
 | 
			
		||||
@@ -322,11 +323,11 @@ colour_find_rgb(u_char r, u_char g, u_char b)
 | 
			
		||||
	colour = 16;
 | 
			
		||||
	lowest = UINT_MAX;
 | 
			
		||||
	for (i = 0; i < 240; i++) {
 | 
			
		||||
		r = colour_from_256[i].r - rgb.r;
 | 
			
		||||
		g = colour_from_256[i].g - rgb.g;
 | 
			
		||||
		b = colour_from_256[i].b - rgb.b;
 | 
			
		||||
		dr = (int)colour_from_256[i].r - r;
 | 
			
		||||
		dg = (int)colour_from_256[i].g - g;
 | 
			
		||||
		db = (int)colour_from_256[i].b - b;
 | 
			
		||||
 | 
			
		||||
		distance = r * r + g * g + b * b;
 | 
			
		||||
		distance = dr * dr + dg * dg + db * db;
 | 
			
		||||
		if (distance < lowest) {
 | 
			
		||||
			lowest = distance;
 | 
			
		||||
			colour = 16 + i;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user