changeset 16815:7a97ff5ef42e

strjoin() should return an empty [0x0] string for an empty input. * scripts/strings/strjoin.m: Return [0x0] char for an empty input. Add test.
author Ben Abbott <bpabbott@mac.com>
date Sun, 23 Jun 2013 09:05:05 +0800
parents 64e7bb01fce2
children 12005245b645
files scripts/strings/strjoin.m
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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'), "")