Commit 84f591bf authored by Jay's avatar Jay
Browse files

v1.19.1

-- Add error handling to close file handles in case of startup errors.
parent 8162f303
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ classdef DataTreeClass < handle
            obj.reg           = RegistriesClass().empty();
            obj.config        = ConfigFileClass().empty();
            obj.dirnameGroup  = '';
            obj.logger        = InitLogger(logger);
            obj.logger        = InitLogger(logger, 'DataTree');
            
            
            %%%% Parse args
@@ -73,7 +73,7 @@ classdef DataTreeClass < handle
        % --------------------------------------------------------------
        function delete(obj)
            if isa(obj.logger, 'Logger')
                obj.logger.Close();
                obj.logger.Close('DataTree');
            end
        end

+9 −2
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@ function Homer3(groupDirs, inputFileFormat)
%

global logger

logger = Logger('Homer3');

logger.CurrTime();
@@ -38,5 +37,13 @@ if isempty(gdir)
        groupDirs = {[getAppDir(), 'SubjDataSample']};
    end
end
MainGUI(groupDirs, inputFileFormat, 'userargs');

try
    MainGUI(groupDirs, inputFileFormat, logger, 'userargs');
catch ME
    % Clean up in case of error make sure all open file handles are closed 
    % so we don't leave the application in a bad state
    logger.Close()
    rethrow(ME)
end
+3 −2
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ end
if ~iscell(maingui.groupDirs)
    maingui.groupDirs = {maingui.groupDirs};
end
maingui.logger = InitLogger(logger);
maingui.logger = InitLogger(logger, 'MainGUI');

for ii=1:length(maingui.groupDirs)
    maingui.logger.CurrTime(sprintf('MainGUI:  Will load group folder #%d - %s\n', ii, maingui.groupDirs{ii}));
@@ -197,7 +197,7 @@ if isempty(maingui.dataTree)
    return;
end
if ~isempty(maingui.logger)
    maingui.logger.Close();
    maingui.logger.Close('MainGUI');
end

% Delete Child GUIs before deleted the dataTree that all GUIs use.
@@ -209,6 +209,7 @@ maingui = [];
clear maingui;



% --------------------------------------------------------------------------------------------
function DisplayGroupTree(handles)
global maingui;
+12 −6
Original line number Diff line number Diff line
@@ -37,15 +37,21 @@ classdef ConfigFileClass < FileClass
                    end
                end
            end
            obj.fid = fopen(filename,'r');
            obj.fid = fopen(filename,'rt');
            if obj.fid<0
                return;
            end

            % We have a filename of an exiting readdable file. 
            % We have a filename of an existing readable file.
            try 
                obj.filename = filesepStandard(filename);
                obj.ParseFile();

            catch ME
                % In case of parsing error make sure to close file handle 
                % so we don't leave the application in a bad state, then rethrow error
                fclose(obj.fid);
	            rethrow(ME)
            end
            fclose(obj.fid);
            obj.fid = -1;
            obj.linestr = '';
+9 −4
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@ classdef Logger < handle
            self.options.value = options;
            
            self.DEBUG = 0;            
            
            self.chapter = struct('maxsize',1e6, 'offset',0, 'number',1);
        end
        
@@ -190,10 +189,16 @@ classdef Logger < handle
        
        
        % -------------------------------------------------
        function Close(self)
        function Close(self, appname)
            if ~exist('appname','var') || isempty(appname)
                appname = self.appname;
            end            
            if self.fhandle < 0
                return;
            end            
            if ~strcmp(self.appname, appname);
                return;
            end
            fclose(self.fhandle);
            self.fhandle = -1;
        end
Loading