Make POSIX::mblen() slightly safer
authorKarl Williamson <khw@cpan.org>
Wed, 3 Apr 2019 19:17:56 +0000 (13:17 -0600)
committerKarl Williamson <khw@cpan.org>
Tue, 9 Apr 2019 18:02:20 +0000 (12:02 -0600)
by using a mutex around its call

ext/POSIX/POSIX.xs

index 27051c1..2972c6d 100644 (file)
@@ -3332,7 +3332,12 @@ mblen(s, n)
         memset(&ps, 0, sizeof(ps)); /* Initialize state */
         RETVAL = mbrlen(s, n, &ps); /* Prefer reentrant version */
 #else
+        /* This might prevent some races, but locales can be switched out
+         * without locking, so this isn't a cure all */
+        LOCALE_LOCK;
+
         RETVAL = mblen(s, n);
+        LOCALE_UNLOCK;
 #endif
     OUTPUT:
         RETVAL