summaryrefslogtreecommitdiff
path: root/ext/POSIX/POSIX.xs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/POSIX/POSIX.xs')
-rw-r--r--ext/POSIX/POSIX.xs23
1 files changed, 5 insertions, 18 deletions
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index cd8447e825..ec409c06fd 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -3437,24 +3437,11 @@ void
strxfrm(src)
SV * src
CODE:
- {
- STRLEN srclen;
- STRLEN dstlen;
- STRLEN buflen;
- char *p = SvPV(src,srclen);
- srclen++;
- buflen = srclen * 4 + 1;
- ST(0) = sv_2mortal(newSV(buflen));
- dstlen = strxfrm(SvPVX(ST(0)), p, (size_t)buflen);
- if (dstlen >= buflen) {
- dstlen++;
- SvGROW(ST(0), dstlen);
- strxfrm(SvPVX(ST(0)), p, (size_t)dstlen);
- dstlen--;
- }
- SvCUR_set(ST(0), dstlen);
- SvPOK_only(ST(0));
- }
+#ifdef USE_LOCALE_COLLATE
+ ST(0) = Perl_strxfrm(aTHX_ src);
+#else
+ ST(0) = src;
+#endif
SysRet
mkfifo(filename, mode)