empty string in switch statement

Sergei Steshenko sergstesh at yahoo.com
Mon Nov 24 21:32:28 CST 2008




--- On Mon, 11/24/08, Peter L. Søndergaard <peter at sonderport.dk> wrote:

> From: Peter L. Søndergaard <peter at sonderport.dk>
> Subject: empty string in switch statement
> To: bug-octave at octave.org
> Date: Monday, November 24, 2008, 5:55 AM
> The following script executes differently under Matlab and
> Octave
> 
> 
> f='';
> 
> switch(f)
>  case ''
>   disp('Equals.');
> end;
> 
> 
> In Matlab, the case statement matches and the word is
> printed. In
> Octave, there is no match.
> 
> I get the completely same behaviour if I use "case
> []" instead.
> 
> I am using Octave 3.0.1 from the Fedora package
> octave-3.0.1-1.fc9.x86_64
> 
> Matlab version 7.4.0.287 (R2007a)
> 
> Cheers,
> 
> Peter.
> 
> 
> 
I have slightly modified your code:

"
15> system("cat -n /home/sergei/acoustics_work/junk.m");
     1  f='';
     2
     3  switch(f)
     4  case ''
     5    disp("Equals ''");
     6  end
     7
     8
     9  switch(f)
    10  case []
    11    disp("Equals []");
    12  end
    13
    14  disp("test case 1 BEGIN");
    15  disp('' == '');
    16  disp("test case 1 END");
    17
    18
    19  disp("test case 2 BEGIN");
    20  disp('foo' == 'foo');
    21  disp("test case 2 END");
octave:16> source("/home/sergei/acoustics_work/junk.m");
test case 1 BEGIN
[](0x0)
test case 1 END
test case 2 BEGIN
   1   1   1
test case 2 END
octave:17> ver
----------------------------------------------------------------------
GNU Octave Version 3.0.3
GNU Octave License: GNU General Public License
Operating System: Linux 2.6.22.19-0.1-default #1 SMP 2008-10-14 22:17:43 +0200 i686
----------------------------------------------------------------------
octave:18>                        
"

- from the last two test cases it looks like comparison of zero length 
strings is broken.

Regards,
  Sergei.


      



More information about the Bug-octave mailing list