Fix error handling in termo_strfkey()
If in any case snprintf() returned a negative value, we would mishandle it.
This commit is contained in:
		
							parent
							
								
									2a351b150d
								
							
						
					
					
						commit
						ef29b7587d
					
				| @ -5,6 +5,7 @@ termo | |||||||
| input.  ncurses does a really terrible job at that, mainly wrt. mouse support | input.  ncurses does a really terrible job at that, mainly wrt. mouse support | ||||||
| which seems to be utterly broken.  If you can drag things in a terminal | which seems to be utterly broken.  If you can drag things in a terminal | ||||||
| application, such as in VIM, I can assure you it's not using ncurses for that. | application, such as in VIM, I can assure you it's not using ncurses for that. | ||||||
|  | (At least not with ncurses older than 6.0.) | ||||||
| 
 | 
 | ||||||
| Since terminal I/O is really complicated and full of special cases, this project | Since terminal I/O is really complicated and full of special cases, this project | ||||||
| doesn't aspire to also replace the output part of ncurses, but is rather | doesn't aspire to also replace the output part of ncurses, but is rather | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								termo.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								termo.c
									
									
									
									
									
								
							| @ -1444,7 +1444,7 @@ termo_strfkey (termo_t *tk, char *buffer, size_t len, | |||||||
| 	termo_key_t *key, termo_format_t format) | 	termo_key_t *key, termo_format_t format) | ||||||
| { | { | ||||||
| 	size_t pos = 0; | 	size_t pos = 0; | ||||||
| 	size_t l = 0; | 	int l = 0; | ||||||
| 
 | 
 | ||||||
| 	struct modnames *mods = &modnames[ | 	struct modnames *mods = &modnames[ | ||||||
| 		!!(format & TERMO_FORMAT_LONGMOD) + | 		!!(format & TERMO_FORMAT_LONGMOD) + | ||||||
| @ -1477,7 +1477,7 @@ termo_strfkey (termo_t *tk, char *buffer, size_t len, | |||||||
| 		{ | 		{ | ||||||
| 			l = snprintf (buffer + pos, len - pos, | 			l = snprintf (buffer + pos, len - pos, | ||||||
| 				wrapbracket ? "<^%c>" : "^%c", (char) codepoint); | 				wrapbracket ? "<^%c>" : "^%c", (char) codepoint); | ||||||
| 			if(l <= 0) | 			if (l <= 0) | ||||||
| 				return pos; | 				return pos; | ||||||
| 			pos += l; | 			pos += l; | ||||||
| 			return pos; | 			return pos; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user