diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index d80cf70f170650fe3529518d53e6b699c83bef2f..0844d1a6df7c1c290e9b7b1ff978157c8bde586a 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libfortran/30145
+	* io/transfer.c (transfer_array):  Check for negative extent.
+
 2006-12-13  Richard Guenther  <rguenther@suse.de>
 
 	PR fortran/30115
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 163557d49b3a5f8fc61a79df7dfa0c1ad8923638..0139380e821811231e622adbb8051a6d13aa968e 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1478,7 +1478,7 @@ transfer_array (st_parameter_dt *dtp, gfc_array_char *desc, int kind,
 
       /* If the extent of even one dimension is zero, then the entire
 	 array section contains zero elements, so we return.  */
-      if (extent[n] == 0)
+      if (extent[n] <= 0)
 	return;
     }