libcpp: bump padding size in _cpp_convert_input [PR116458]
The recently introduced search_line_fast_ssse3 raised padding requirement from 16 to 64, which was adjusted in read_file_guts, but the corresponding ' + 16' in _cpp_convert_input was overlooked. libcpp/ChangeLog: PR preprocessor/116458 * charset.cc (_cpp_convert_input): Bump padding to 64 if HAVE_SSSE3.
This commit is contained in:
parent
96fe95bac6
commit
b2c1d7c457
1 changed files with 11 additions and 8 deletions
|
@ -3093,6 +3093,7 @@ _cpp_convert_input (cpp_reader *pfile, const char *input_charset,
|
|||
struct cset_converter input_cset;
|
||||
struct _cpp_strbuf to;
|
||||
unsigned char *buffer;
|
||||
size_t pad;
|
||||
|
||||
input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset);
|
||||
if (input_cset.func == convert_no_conversion)
|
||||
|
@ -3129,16 +3130,18 @@ _cpp_convert_input (cpp_reader *pfile, const char *input_charset,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSSE3
|
||||
pad = 64;
|
||||
#else
|
||||
pad = 16;
|
||||
#endif
|
||||
/* Resize buffer if we allocated substantially too much, or if we
|
||||
haven't enough space for the \n-terminator or following
|
||||
15 bytes of padding (used to quiet warnings from valgrind or
|
||||
Address Sanitizer, when the optimized lexer accesses aligned
|
||||
16-byte memory chunks, including the bytes after the malloced,
|
||||
area, and stops lexing on '\n'). */
|
||||
if (to.len + 4096 < to.asize || to.len + 16 > to.asize)
|
||||
to.text = XRESIZEVEC (uchar, to.text, to.len + 16);
|
||||
don't have enough space for the following padding, which allows
|
||||
search_line_fast to use (possibly misaligned) vector loads. */
|
||||
if (to.len + 4096 < to.asize || to.len + pad > to.asize)
|
||||
to.text = XRESIZEVEC (uchar, to.text, to.len + pad);
|
||||
|
||||
memset (to.text + to.len, '\0', 16);
|
||||
memset (to.text + to.len, '\0', pad);
|
||||
|
||||
/* If the file is using old-school Mac line endings (\r only),
|
||||
terminate with another \r, not an \n, so that we do not mistake
|
||||
|
|
Loading…
Add table
Reference in a new issue