Mercurial > octave
diff libinterp/corefcn/ls-oct-text.cc @ 28161:ef349f5c320b
Load structures with arbitrary string fieldnames (bug #50831, bug #46645).
* ls-oct-text.h, ls-oct-text.cc (read_text_data): Consider additional optional
bool argument to skip validation of input name.
* ov-struct.cc (octave_struct::load_ascii, octave_scalar_struct::load_ascii):
Call read_text_data with additional argument (skip_validation), set to true.
* test/bug-50831/bug-50831.tst, test/bug-50831/module.mk: New test files.
author | Olaf Till <i7tiol@t-online.de> |
---|---|
date | Wed, 19 Apr 2017 15:06:31 +0200 |
parents | a4268efb7334 |
children | 7a8c69c4eb55 |
line wrap: on
line diff
--- a/libinterp/corefcn/ls-oct-text.cc Sat Mar 14 20:23:01 2020 -0700 +++ b/libinterp/corefcn/ls-oct-text.cc Wed Apr 19 15:06:31 2017 +0200 @@ -237,7 +237,8 @@ std::string read_text_data (std::istream& is, const std::string& filename, bool& global, - octave_value& tc, octave_idx_type count) + octave_value& tc, octave_idx_type count, + const bool do_name_validation) { // Read name for this entry or break on EOF. @@ -252,7 +253,8 @@ return ""; } - if (! (name == CELL_ELT_TAG || octave::valid_identifier (name))) + if (name != CELL_ELT_TAG + && do_name_validation && ! octave::valid_identifier (name)) error ("load: invalid identifier '%s' found in file '%s'", name.c_str (), filename.c_str ());