Handle lone surrogate unicode character not being representable in Jython
No tests for this because we don't test with Jython currently. Fix #5256
This commit is contained in:
		
							parent
							
								
									43617a8c47
								
							
						
					
					
						commit
						e253029ad0
					
				|  | @ -0,0 +1 @@ | ||||||
|  | Handle internal error due to a lone surrogate unicode character not being representable in Jython. | ||||||
|  | @ -998,7 +998,15 @@ def _get_line_with_reprcrash_message(config, rep, termwidth): | ||||||
|                     # u'😄' will result in a High Surrogate (U+D83D) character, which is |                     # u'😄' will result in a High Surrogate (U+D83D) character, which is | ||||||
|                     # rendered as u'<27>'; in this case we just strip that character out as it |                     # rendered as u'<27>'; in this case we just strip that character out as it | ||||||
|                     # serves no purpose being rendered |                     # serves no purpose being rendered | ||||||
|                     msg = msg.rstrip(u"\uD83D") |                     try: | ||||||
|  |                         surrogate = six.unichr(0xD83D) | ||||||
|  |                         msg = msg.rstrip(surrogate) | ||||||
|  |                     except ValueError:  # pragma: no cover | ||||||
|  |                         # Jython cannot represent this lone surrogate at all (#5256): | ||||||
|  |                         # ValueError: unichr() arg is a lone surrogate in range | ||||||
|  |                         #     (0xD800, 0xDFFF) (Jython UTF-16 encoding) | ||||||
|  |                         # ignore this case as it shouldn't appear in the string anyway | ||||||
|  |                         pass | ||||||
|                 msg += ellipsis |                 msg += ellipsis | ||||||
|             line += sep + msg |             line += sep + msg | ||||||
|     return line |     return line | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue