diff --git a/src/builtin_functions.c b/src/builtin_functions.c
index 9b63265beb0958c5e3d750a8241a513c6627cf4b..44e5ca7a0650ff709767226924ca89a97387a7de 100644
--- a/src/builtin_functions.c
+++ b/src/builtin_functions.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: builtin_functions.c,v 1.269 2000/04/30 11:05:08 grubba Exp $");
+RCSID("$Id: builtin_functions.c,v 1.270 2000/05/04 03:17:52 hubbe Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "pike_macros.h"
@@ -2722,7 +2722,7 @@ void f_column(INT32 args)
   get_all_args("column", args, "%a%*", &tmp, &val);
 
   /* Optimization */
-  if(tmp->refs == 1)
+  if(tmp->refs == 1 || ~(tmp->type_field & BIT_COMPLEX))
   {
     /* An array with one ref cannot possibly be cyclic */
     struct svalue sval;