Hello Federico,

Le 25/02/2019 à 01:06, Federico Miyara a écrit :

Dear all,

I'm reviewing the wavread function code which I could find (on Windows 7) at the following path:

C:\Program Files\scilab-6.0.2\modules\sound\macros\wavread.sci

There is a code segment at the beginninig intended to detect if the wavfile has or not the .wav extension:

// Append .wav extension if necessary
if ( strindex(wavfile, ".") == [] ) then
wavfile = wavfile + ".wav";
end

This contains a bug, since the wavfile name might contain a dot different from the one between the name and the extension. The normal case would be

sound.wav

and in this case the code works fine if the trailing .wav is absent. But in a case such as

sound_v1.1.wav

the code will detect a dot within the abbreviated name 'sound_v1.1' and will not append the .wav extension, hence the function will fail to find and open the file.

Fortunately the issue is solved quite easily:

// Append .wav extension if necessary
if (~(max(strindex(wavfile,'.wav')) == length(wavfile)-3)) then
wavfile = wavfile + '.wav';
end

You are right. The current test is very fragile.
The regular way would rather be

if fileparts(wavfile,"extension")<>"wav",
   wavfile = wavfile+ ".wav"
end

Maybe fileparts() did not yet exist when the code was written.

Please do not hesitate to open another bug report to gather all this in a trackable place.

Regards
Samuel

_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to