summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-02-19 01:55:14 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-02-19 01:55:14 +0000
commit3ec562b0bffb8b8b48df56ef7460b59729c19345 (patch)
treec085090f909cee31ff07f8c4df4e2a12765ec422
parenta6da3000f891055d63501a206d4a09ca94f64209 (diff)
downloadperl-3ec562b0bffb8b8b48df56ef7460b59729c19345.tar.gz
Not extending enough.
p4raw-id: //depot/perl@14758
-rw-r--r--pp.c4
-rw-r--r--utf8.h6
2 files changed, 6 insertions, 4 deletions
diff --git a/pp.c b/pp.c
index 51facc0730..be6d7233a2 100644
--- a/pp.c
+++ b/pp.c
@@ -3351,7 +3351,7 @@ PP(pp_uc)
}
else {
(void)SvUPGRADE(TARG, SVt_PV);
- SvGROW(TARG, (len * 2) + 1);
+ SvGROW(TARG, (len * UTF8_MAXLEN_UCLC) + 1);
(void)SvPOK_only(TARG);
d = (U8*)SvPVX(TARG);
send = s + len;
@@ -3418,7 +3418,7 @@ PP(pp_lc)
}
else {
(void)SvUPGRADE(TARG, SVt_PV);
- SvGROW(TARG, (len * 2) + 1);
+ SvGROW(TARG, (len * UTF8_MAXLEN_UCLC) + 1);
(void)SvPOK_only(TARG);
d = (U8*)SvPVX(TARG);
send = s + len;
diff --git a/utf8.h b/utf8.h
index 49531a99ef..feff1b4696 100644
--- a/utf8.h
+++ b/utf8.h
@@ -138,9 +138,11 @@ END_EXTERN_C
/* how wide can a single UTF8 encoded character become */
#define UTF8_MAXLEN 13
/* how wide a character can become when upper/lowercased */
-#define UTF8_MAXLEN_UCLC (UTF8_MAXLEN*2)
+#define UTF8_MAXLEN_UCLC_MULT 3
+#define UTF8_MAXLEN_UCLC (UTF8_MAXLEN*UTF8_MAXLEN_UCLC_MULT)
/* how wide a character can become when casefolded */
-#define UTF8_MAXLEN_FOLD (UTF8_MAXLEN*3)
+#define UTF8_MAXLEN_FOLD_MULT 3
+#define UTF8_MAXLEN_FOLD (UTF8_MAXLEN*UTF8_MAXLEN_FOLD_MULT)
#define IN_BYTES (PL_curcop->op_private & HINT_BYTES)
#define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTES)