# HG changeset patch # User Philip Nienhuis # Date 1439155395 -7200 # Node ID 4c4d8fe5583a008d4436afd8666eb8e2816c469a # Parent 97edbce9b975166eb7362632f7925284db149b0c strread.m: properly preprocess all forms of string format specifier (bug #45712) diff -r 97edbce9b975 -r 4c4d8fe5583a scripts/io/strread.m --- a/scripts/io/strread.m Tue Aug 11 09:55:59 2015 -0700 +++ b/scripts/io/strread.m Sun Aug 09 23:23:15 2015 +0200 @@ -388,7 +388,7 @@ if (! isempty (white_spaces)) ## For numeric fields, whitespace is always a delimiter, but not for text ## fields - if (isempty (strfind (format, "%s"))) + if (isempty (regexp (format, '%\*?\d*s'))) ## Add whitespace to delimiter set delimiter_str = unique ([white_spaces delimiter_str]); else @@ -1086,3 +1086,9 @@ ## Test for false positives in check for non-supported format specifiers %!test %! assert (strread ("Total: 32.5 % (of cm values)","Total: %f % (of cm values)"), 32.5, 1e-5); + +## Test various forms of string format specifiers (bug #45712) +%!test +%! str = "14 :1 z:2 z:3 z:5 z:11"; +%! [a, b, c, d] = strread (str, "%f %s %*s %3s %*3s %f", "delimiter", ":"); +%! assert ({a, b, c, d}, {14, {"1 z"}, {"3 z"}, 11});