Author: mjevans
Date: Mon May 14 01:17:22 2012
New Revision: 15304

Modified:
   dbi/trunk/Changes
   dbi/trunk/DBI.xs
   dbi/trunk/t/35thrclone.t

Log:
apply Dave Mitchell patch fix for rt 77137


Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes   (original)
+++ dbi/trunk/Changes   Mon May 14 01:17:22 2012
@@ -6,6 +6,11 @@
 
 =cut
 
+=head2 Changes in DBI 1.xxx (svn rxxx)
+
+  Fixed RT#77137 - segmentation fault when a thread is created from
+  within another thread thanks to Dave Mitchell.
+
 =head2 Changes in DBI 1.620 (svn r15300) 25th April 2012
 
   Modified column renaming in fetchall_arrayref, added in 1.619,

Modified: dbi/trunk/DBI.xs
==============================================================================
--- dbi/trunk/DBI.xs    (original)
+++ dbi/trunk/DBI.xs    Mon May 14 01:17:22 2012
@@ -283,6 +283,7 @@
     CV *ncv = (CV*)ptr_table_fetch(PL_ptr_table, (cv));
 
     (void)param; /* avoid 'unused variable' warning */
+    mg->mg_ptr = (char *)ncv;
     ima = (dbi_ima_t*) CvXSUBANY(cv).any_ptr;
     Newx(nima, 1, dbi_ima_t);
     *nima = *ima; /* structure copy */

Modified: dbi/trunk/t/35thrclone.t
==============================================================================
--- dbi/trunk/t/35thrclone.t    (original)
+++ dbi/trunk/t/35thrclone.t    Mon May 14 01:17:22 2012
@@ -52,6 +52,11 @@
         cmp_ok($dbh->{Driver}->{Kids}, '==', 1, '... the Driver has one Kid')
                unless $DBI::PurePerl && ok(1);
     }
+
+    # RT #77137: a thread created from a thread was crashing the
+    # interpreter
+
+    threads->new(sub {})->join();
 }
 
 # load up the threads

Reply via email to