]> granicus.if.org Git - postgresql/commitdiff
Fix plperl crash with list value return for an array result type.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 12 Jul 2005 20:35:42 +0000 (20:35 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 12 Jul 2005 20:35:42 +0000 (20:35 +0000)
Reported by Michael Fuhr, fixed by Andrew Dunstan.

src/pl/plperl/plperl.c

index 664688a32b92938c5e3255cb03e09218be78c50f..3e97fb87557b4c09ab556a82fbb7607870b3142a 100644 (file)
@@ -33,7 +33,7 @@
  *       ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.85 2005/07/12 01:16:21 tgl Exp $
+ *       $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.86 2005/07/12 20:35:42 tgl Exp $
  *
  **********************************************************************/
 
@@ -1020,8 +1020,8 @@ plperl_func_handler(PG_FUNCTION_ARGS)
         /* Return a perl string converted to a Datum */
         char *val;
  
-
-        if (prodesc->fn_retisarray && SvTYPE(SvRV(perlret)) == SVt_PVAV)
+        if (prodesc->fn_retisarray && SvROK(perlret) &&
+                       SvTYPE(SvRV(perlret)) == SVt_PVAV)
         {
             array_ret = plperl_convert_to_pg_array(perlret);
             SvREFCNT_dec(perlret);