aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/io.h
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2014-05-18 02:29:27 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2014-05-18 02:29:27 +0000
commitd428be77b67871c71638355985061dca1ff06acb (patch)
tree0ba97cc9c85f611d67cbc29703a41e51264adaad /libgfortran/io/io.h
parentef61de094e058fbb13793e3bd64037bc8718ee1b (diff)
downloadgcc-d428be77b67871c71638355985061dca1ff06acb.zip
gcc-d428be77b67871c71638355985061dca1ff06acb.tar.gz
gcc-d428be77b67871c71638355985061dca1ff06acb.tar.bz2
re PR libfortran/52539 (I/O: Wrong result for UTF-8/UCS-4 list-directed and namelist read and nml write)
2014-05-17 Jerry DeLisle <jvdelisle@gcc.gnu> PR libfortran/52539 * io/io.h (gfc_unit): New function pointers *next_char_fn_ptr and *push_char_fn_ptr. *io/list_read.c (next_char): Create macro with this name to call the new function pointer. Split the original next_char function into three new functions. (next_char_default, next_char_internal, next_char_utf8): New functions. (push_char): Create macro with this name to call new function pointer. Split the original push_char into three new functions. (push_char_default, push_char_internal, push_char4): New functions. (set_workers): New function to initilize the function pointers depending on the type of IO to be performed. (list_formatted_read_scalar): Use set_workers function. (finish_list_read): Likewise. (namelist_read): Likewise. (nml_get_obj_data): Use push_char_default. From-SVN: r210574
Diffstat (limited to 'libgfortran/io/io.h')
-rw-r--r--libgfortran/io/io.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index 3481c83..4e71d49 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -575,6 +575,10 @@ typedef struct gfc_unit
/* Formatting buffer. */
struct fbuf *fbuf;
+
+ /* Function pointer, points to list_read worker functions. */
+ int (*next_char_fn_ptr) (st_parameter_dt *);
+ void (*push_char_fn_ptr) (st_parameter_dt *, int);
}
gfc_unit;