Mercurial > hg > octave-nkf
diff libinterp/interpfcn/graphics.cc @ 16854:563f8f0a7e29
Handle ticklabel specification with '|' the same way as Matlab (bug #39344).
* libinterp/interpfcn/graphics.cc(convert_ticklabel_string): Append a null string
if the last character of specification is the delimiter '|'. Use SPACE in
charMatrix constructor rather than searching and modifying generated Matrix.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 26 Jun 2013 14:29:15 -0700 |
parents | 2ce1ddead134 |
children | 359ac80ecb30 |
line wrap: on
line diff
--- a/libinterp/interpfcn/graphics.cc +++ b/libinterp/interpfcn/graphics.cc @@ -5756,7 +5756,7 @@ } else { - string_vector str; + string_vector sv; if (val.is_numeric_type ()) { NDArray data = val.array_value (); @@ -5766,30 +5766,29 @@ { oss.str (""); oss << data(i); - str.append (oss.str ()); + sv.append (oss.str ()); } } else if (val.is_string () && val.rows () == 1) { - std::istringstream iss (val.string_value ()); + std::string valstr = val.string_value (); + std::istringstream iss (valstr); std::string tmpstr; // Split string with delimiter '|' while (std::getline (iss, tmpstr, '|')) - { - str.append (tmpstr); - } + sv.append (tmpstr); + + // If string ends with '|' Matlab appends a null string + if (*valstr.rbegin () == '|') + sv.append (std::string ("")); } else return retval; - charMatrix ch (str); - - for (octave_idx_type i = 0; i < ch.numel (); i++) - if (ch(i) == 0) - ch(i) = ' '; - - retval = octave_value (ch); + charMatrix chmat (sv, ' '); + + retval = octave_value (chmat); } return retval;