OSDN Git Service

2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Feb 2010 07:45:55 +0000 (07:45 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Feb 2010 07:45:55 +0000 (07:45 +0000)
PR libfortran/42742
* io/format.c (reset_fnode_counters): Use the correct pointer to the
head of the fnode list. (parse_format): Remove previous hack that set
limit on size of format string for caching.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156568 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/format.c

index be54763..3f52e5f 100644 (file)
@@ -1,5 +1,12 @@
 2010-02-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
+       PR libfortran/42742
+       * io/format.c (reset_fnode_counters): Use the correct pointer to the
+       head of the fnode list. (parse_format): Remove previous hack that set
+       limit on size of format string for caching.
+
+2010-02-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
        PR libfortran
        * io/transfer.c (read_sf): Handle EOR and EOF conditions for
        ADVANCE="no" with PAD="yes" or PAD="no".
index 13516d2..68b9e99 100644 (file)
@@ -130,7 +130,7 @@ reset_fnode_counters (st_parameter_dt *dtp)
   /* Clear this pointer at the head so things start at the right place.  */
   fmt->array.array[0].current = NULL;
 
-  for (f = fmt->last->array[0].u.child; f; f = f->next)
+  for (f = fmt->array.array[0].u.child; f; f = f->next)
     reset_node (f);
 }
 
@@ -1212,8 +1212,6 @@ revert (st_parameter_dt *dtp)
 
 /* parse_format()-- Parse a format string.  */
 
-#define FORMAT_CACHE_STRING_LIMIT 256
-
 void
 parse_format (st_parameter_dt *dtp)
 {
@@ -1222,8 +1220,7 @@ parse_format (st_parameter_dt *dtp)
 
   /* Don't cache for internal units and set an arbitrary limit on the size of
      format strings we will cache.  (Avoids memory issues.)  */
-  format_cache_ok = !is_internal_unit (dtp)
-                   && (dtp->format_len < FORMAT_CACHE_STRING_LIMIT );
+  format_cache_ok = !is_internal_unit (dtp);
 
   /* Lookup format string to see if it has already been parsed.  */
   if (format_cache_ok)