degesch: better shift state encoding handling
I don't know, probably didn't matter.
This commit is contained in:
		
							parent
							
								
									f7dce5e861
								
							
						
					
					
						commit
						36be830bfc
					
				
							
								
								
									
										14
									
								
								degesch.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								degesch.c
									
									
									
									
									
								
							| @ -3599,9 +3599,16 @@ explode_formatter_attr (struct exploder *self, struct formatter_item *item) | ||||
| static void | ||||
| explode_text (struct exploder *self, const char *text) | ||||
| { | ||||
| 	// Throw away any potentially harmful control characters first
 | ||||
| 	struct str filtered = str_make (); | ||||
| 	for (const char *p = text; *p; p++) | ||||
| 		if (!strchr ("\a\b\x1b", *p)) | ||||
| 			str_append_c (&filtered, *p); | ||||
| 
 | ||||
| 	size_t term_len = 0; | ||||
| 	char *term = iconv_xstrdup (self->ctx->term_from_utf8, | ||||
| 		(char *) text, -1, &term_len); | ||||
| 		filtered.str, filtered.len + 1, &term_len); | ||||
| 	str_free (&filtered); | ||||
| 
 | ||||
| 	mbstate_t ps; | ||||
| 	memset (&ps, 0, sizeof ps); | ||||
| @ -3613,11 +3620,6 @@ explode_text (struct exploder *self, const char *text) | ||||
| 		hard_assert (len != (size_t) -2 && len != (size_t) -1); | ||||
| 		processed += len; | ||||
| 
 | ||||
| 		// Throw away any potentially harmful control characters
 | ||||
| 		// XXX: this is likely to break shift state encodings
 | ||||
| 		if (wcschr (L"\a\b\x1b", wch)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		struct line_char *c = line_char_new (term + processed - len, len, wch); | ||||
| 		c->attrs = self->attrs; | ||||
| 		LIST_APPEND_WITH_TAIL (self->result, self->result_tail, c); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user