mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Log wcwidth() and mbtowc() failure to make it easier to debug a Unicode
codepoint not appearing.
This commit is contained in:
		
							
								
								
									
										7
									
								
								utf8.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								utf8.c
									
									
									
									
									
								
							@@ -18,6 +18,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include <vis.h>
 | 
					#include <vis.h>
 | 
				
			||||||
@@ -116,8 +117,10 @@ utf8_width(wchar_t wc)
 | 
				
			|||||||
	int	width;
 | 
						int	width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	width = wcwidth(wc);
 | 
						width = wcwidth(wc);
 | 
				
			||||||
	if (width < 0 || width > 0xff)
 | 
						if (width < 0 || width > 0xff) {
 | 
				
			||||||
 | 
							log_debug("Unicode %04x, wcwidth() %d", wc, width);
 | 
				
			||||||
		return (-1);
 | 
							return (-1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return (width);
 | 
						return (width);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -127,6 +130,8 @@ utf8_combine(const struct utf8_data *ud, wchar_t *wc)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	switch (mbtowc(wc, ud->data, ud->size)) {
 | 
						switch (mbtowc(wc, ud->data, ud->size)) {
 | 
				
			||||||
	case -1:
 | 
						case -1:
 | 
				
			||||||
 | 
							log_debug("UTF-8 %.*s, mbtowc() %d", (int)ud->size, ud->data,
 | 
				
			||||||
 | 
							    errno);
 | 
				
			||||||
		mbtowc(NULL, NULL, MB_CUR_MAX);
 | 
							mbtowc(NULL, NULL, MB_CUR_MAX);
 | 
				
			||||||
		return (UTF8_ERROR);
 | 
							return (UTF8_ERROR);
 | 
				
			||||||
	case 0:
 | 
						case 0:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user