# HG changeset patch # User Ben Abbott # Date 1371949505 -28800 # Node ID 7a97ff5ef42e4fe54ebabdcd931402c16f56ab3f # Parent 64e7bb01fce290be1693e3d8ab08313958dc7b3b strjoin() should return an empty [0x0] string for an empty input. * scripts/strings/strjoin.m: Return [0x0] char for an empty input. Add test. diff --git a/scripts/strings/strjoin.m b/scripts/strings/strjoin.m --- a/scripts/strings/strjoin.m +++ b/scripts/strings/strjoin.m @@ -70,14 +70,18 @@ if (numel (delimiter) == 1 && num > 1) delimiter = repmat (delimiter, 1, num); delimiter(end) = {""}; - elseif (numel (delimiter) != num - 1) + elseif (num > 0 && numel (delimiter) != num - 1) error ("strjoin:cellstring_delimiter_mismatch", "strjoin: the number of delimiters does not match the number of strings") else delimiter(end+1) = {""}; endif - rval = [[cstr(:).'; delimiter(:).']{:}]; + if (num == 0) + rval = "" + else + rval = [[cstr(:).'; delimiter(:).']{:}]; + endif endfunction @@ -89,3 +93,4 @@ %! {" ", ",", "-", ";"}), "space comma,dash-semicolon;done") %!assert (strjoin ({'Octave','Scilab'},'\n'), "Octave\nScilab") %!assert (strjoin ({'Octave','Scilab'},{'\n'}), "Octave\\nScilab") +%!assert (strjoin ({},'foo'), "")