[interchange] Fix regression with how Vend::Safe performs initialization

David Christensen interchange-cvs at icdevgroup.org
Mon May 2 20:40:00 UTC 2016


commit 672b8a113a515671967a04b2754323c7f643dbce
Author: David Christensen <david at endpoint.com>
Date:   Mon May 2 15:39:03 2016 -0500

    Fix regression with how Vend::Safe performs initialization
    
    In newer versions of Perl (5.18+) `make test` failed due to some odd interactions with Safe and Unicode
    initialization.  The good news is that the failing routines are no longer needed, because Safe.pm now
    properly sets up Safe compartments with Unicode support without needing our help.
    
    Avoid the special-case handling by Interchange when we are using a new enough Safe.pm.

 lib/Vend/Safe.pm |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/lib/Vend/Safe.pm b/lib/Vend/Safe.pm
index 19a9620..cc2e6a2 100644
--- a/lib/Vend/Safe.pm
+++ b/lib/Vend/Safe.pm
@@ -27,6 +27,12 @@ use warnings;
 use Vend::CharSet;
 use Safe;
 
+BEGIN {
+    eval {
+        require version;
+    };
+};
+
 # The L<new> method creates and returns an initialized Safe
 # compartment.  This is mainly provided so there is a single point of
 # modification for all needed Safe.pm initializations.
@@ -35,7 +41,11 @@ sub new {
     my ($invocant, @args) = @_;
 
     my $safe = Safe->new(@args);
-    $invocant->initialize_safe_compartment($safe);
+
+    # Safe started taking better care of Unicode things as of version 2.32
+    if ($] lt '5.009' || version->parse($Safe::VERSION) < version->parse('2.32')) {
+        $invocant->initialize_safe_compartment($safe);
+    }
 
     return $safe;
 }



More information about the interchange-cvs mailing list