Fix mysterious ::Storage::DBI goto-shim failures on older
Peter Rabbitson [Tue, 31 Aug 2010 10:39:01 +0000 (12:39 +0200)]
perl versions (tested on 5.8.1)

Changes
lib/DBIx/Class/Storage/DBI.pm

diff --git a/Changes b/Changes
index a20019f..8037e66 100644 (file)
--- a/Changes
+++ b/Changes
@@ -28,6 +28,8 @@ Revision history for DBIx::Class
         - Fixed SELECT ... FOR UPDATE with LIMIT regression (RT#58554)
         - Fixed CDBICompat to preserve order of column-group additions,
           so that test relying on the order of %{} will no longer fail
+        - Fixed mysterious ::Storage::DBI goto-shim failures on older
+          perl versions
 
     * Misc
         - Refactored capability handling in Storage::DBI, allows for
index ef02092..e84f38d 100644 (file)
@@ -93,7 +93,13 @@ for my $meth (@rdbms_specific_methods) {
   *{__PACKAGE__ ."::$meth"} = subname $meth => sub {
     if (not $_[0]->_driver_determined and not $_[0]->{_in_determine_driver}) {
       $_[0]->_determine_driver;
-      goto $_[0]->can($meth);
+
+      # This for some reason crashes and burns on perl 5.8.1
+      # IFF the method ends up throwing an exception
+      #goto $_[0]->can ($meth);
+
+      my $cref = $_[0]->can ($meth);
+      goto $cref;
     }
     goto $orig;
   };