Big Issue en R2012b

BIG BIG issue R2012b – Windows XP

EDIT du 19 Décembre-2012 bug corrigé dans la Prerelase 2013a

Alors si vous êtes en Windows XP Service Pack 3 et que vous avez téléchargé la R2012b , attention attention! Je crois avoir trouvé le bug du siècle avec EXIST après un UIGETFILE!

Un truc de taré avec un code simple à tester sur n’importe quelle machine avec la R2012b installée.
Les fichiers trademarks.txt et patents.txt étant shippés avec tourtes les releases MATLAB.

% go in a folder outside ML path
cd(tempdir)

% exist is going to return 0 (normal)
exist('trademarks.txt')
exist('patents.txt')

% select any text file
uigetfile(fullfile(matlabroot,'*.*'),'select any txt file')

% here is the BUG
% exist now returns 2 !!!
exist('trademarks.txt')  
exist('patents.txt')

% but now try which('trademarks.txt') or edit('trademarks.txt') !!

Bug reproduit plusieurs fois sur plusieurs machines Windows XP.
Dans toutes les autres versions de MATLAB exist retourne comme attendu ZERO.
Sous Linux 12b le code raussi retourne ZERO.

Moi j’ai eu ce souci avec des MAT-files qui n’étaient pas sur mon path … alors vous voyez le truc : MATLAB vous dit que le fichier existe parce via un uigetfile il l’a vu , mais ensuite vous ne pouvez rien faire avec ce fichier : ni l’éditer , ni l’effacer , ni appender des data … bref bug bug bug!!!!

Voilà le .m que j’ai envoyé au support technique avec mes investigations …

Note avec UIGETDIR il n’y a pas de problème.

%bug2ouf
% Author Aurelien QUEFFURUST
%
% This script is an easy example to reproduce an issue with MATLAB 8.0 (12b.)
% As trademarks.txt , patents.txt are text files that every MATLAB user have
% in his matlabroot directory, this script can be run by everybody.
%
%
% What? :
% The EXIST function in R2012b returns that a file exists (which is physically true)
% but this file is neither in the current directory nor in MATLAB path
% Issue are dramatic with this new behavior :
% Since MATLAB tells you that the file exists, you may want to edit it, find his path ….
% here is the issue MATLAB tells you not found.
%
% My own investigation
% Bug which can only be reproduced in R2012b.
% I guess that the EXIST built-in which has changed in Feb 2012 is the cause
% of this issue.
%
%
%
% For investigation purposes this is my exist M-files :
% >>which -all exist
% built-in (F:\R2012b\toolbox\matlab\lang\@char\exist) % char method
% built-in (F:\R2012b\toolbox\matlab\lang\@double\exist) % double method
% F:\R2012b\toolbox\matlab\funfun\@inline\exist.m % inline method
%
% F is Local disk.
%
% Date : 26-Sep-2012
% Author Aurelien QUEFFURUST

%% GO outside matlabroot
% To show that is not a PATH issue ,go in any folder outside matlabroot
% , for example :
cd(tempdir)
%% the 2 following commands return the expected result : zero
exist(‘trademarks.txt’) % -> 0
exist(‘patents.txt’) % ->0
%% now select any txt file
uigetfile(fullfile(matlabroot,’*.*’),’select any txt file’)

%% First Unexpected result
% even if they are not in the path MATLAB now say that they exist !!
exist(‘trademarks.txt’) % -> returns 2 in R2012b
exist(‘patents.txt’) % -> returns 2 in R2012b

%% Second Unexpected resultt
% since exist return 2 , MATLAB should be able to tell me where the text file is:
% instead MATLAB returns’trademarks.txt’ not found.
which(‘trademarks.txt’) % -> ‘trademarks.txt’ not found.

% other example which will fail
% delete trademarks.txt % -> Warning: File ‘trademarks.txt’ not found.
% edit trademarks.txt %-> File … does not exist , Do you want to create it? …

Une réflexion au sujet de « Big Issue en R2012b »

  1. Ping : Bug report R2012b | MATLAB pour les geeks

Laisser un commentaire