diff options
author | Karl Williamson <khw@cpan.org> | 2018-01-22 12:45:14 -0700 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2018-01-22 12:49:20 -0700 |
commit | 81b3f640bb2856350fe6a5efe32056accab1d775 (patch) | |
tree | 3a5c0476c9b773c3ae192f5e48fed2a2358e4ee8 | |
parent | 10417d4775a08e4e3438d6f298f69b6ada5e2fea (diff) | |
download | perl-81b3f640bb2856350fe6a5efe32056accab1d775.tar.gz |
Allow space for NUL is UTF-8 array decls
In grepping the source, I noticed that several arrays that are for
holding UTF-8 characters did not allow space for a trailing NUL. This
commit adds that.
-rw-r--r-- | ext/XS-APItest/APItest.pm | 2 | ||||
-rw-r--r-- | ext/XS-APItest/APItest.xs | 2 | ||||
-rw-r--r-- | pp_pack.c | 4 | ||||
-rw-r--r-- | regcomp.c | 4 | ||||
-rw-r--r-- | toke.c | 2 |
5 files changed, 7 insertions, 7 deletions
diff --git a/ext/XS-APItest/APItest.pm b/ext/XS-APItest/APItest.pm index e30838ae3b..8eda0f7a02 100644 --- a/ext/XS-APItest/APItest.pm +++ b/ext/XS-APItest/APItest.pm @@ -5,7 +5,7 @@ use strict; use warnings; use Carp; -our $VERSION = '0.95'; +our $VERSION = '0.96'; require XSLoader; diff --git a/ext/XS-APItest/APItest.xs b/ext/XS-APItest/APItest.xs index 144d62488d..0ad08237af 100644 --- a/ext/XS-APItest/APItest.xs +++ b/ext/XS-APItest/APItest.xs @@ -1452,7 +1452,7 @@ test_uvchr_to_utf8_flags(uv, flags) SV *uv SV *flags PREINIT: - U8 dest[UTF8_MAXBYTES]; + U8 dest[UTF8_MAXBYTES + 1]; U8 *ret; CODE: @@ -1288,7 +1288,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c STRLEN retlen; UV auv; if (utf8) { - U8 result[UTF8_MAXLEN]; + U8 result[UTF8_MAXLEN+1]; const char *ptr = s; STRLEN len; /* Bug: warns about bad utf8 even if we are short on bytes @@ -2643,7 +2643,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) fromstr = NEXTFROM; auv = SvUV_no_inf(fromstr, datumtype); if (utf8) { - U8 buffer[UTF8_MAXLEN], *endb; + U8 buffer[UTF8_MAXLEN+1], *endb; endb = uvchr_to_utf8_flags(buffer, UNI_TO_NATIVE(auv), 0); if (cur+(endb-buffer)*UTF8_EXPAND >= end) { *cur = '\0'; @@ -13267,7 +13267,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth) char *p; char *s; #define MAX_NODE_STRING_SIZE 127 - char foldbuf[MAX_NODE_STRING_SIZE+UTF8_MAXBYTES_CASE]; + char foldbuf[MAX_NODE_STRING_SIZE+UTF8_MAXBYTES_CASE+1]; char *s0; U8 upper_parse = MAX_NODE_STRING_SIZE; U8 node_type = compute_EXACTish(pRExC_state); @@ -17013,7 +17013,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, { /* Here <value> is indeed a multi-char fold. Get what it is */ - U8 foldbuf[UTF8_MAXBYTES_CASE]; + U8 foldbuf[UTF8_MAXBYTES_CASE+1]; STRLEN foldlen; UV folded = _to_uni_fold_flags( @@ -10563,7 +10563,7 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re I32 brackets = 1; /* bracket nesting level */ bool has_utf8 = FALSE; /* is there any utf8 content? */ IV termcode; /* terminating char. code */ - U8 termstr[UTF8_MAXBYTES]; /* terminating string */ + U8 termstr[UTF8_MAXBYTES+1]; /* terminating string */ STRLEN termlen; /* length of terminating string */ line_t herelines; |