X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2FWADEDITOR_dfwad.pas;h=b8de439d9d38cf500f43e36027734eabf283fde0;hb=e0fc0ed3e766f6b2c339586976198bdf1bbea66d;hp=97097bb2f7c47ac3fa2c406ee6dfb8368810f9d6;hpb=62510aba1475a33bb79c59a60b3b6c2ed47b9e2c;p=d2df-editor.git diff --git a/src/shared/WADEDITOR_dfwad.pas b/src/shared/WADEDITOR_dfwad.pas index 97097bb..b8de439 100644 --- a/src/shared/WADEDITOR_dfwad.pas +++ b/src/shared/WADEDITOR_dfwad.pas @@ -534,6 +534,7 @@ implementation pData := ptr; Len := size; Result := True; + FLastError := DFWAD_NOERROR; except FreeMem(ptr); raise; @@ -547,6 +548,7 @@ implementation pData := ptr; Len := p.data.usize; Result := True; + FLastError := DFWAD_NOERROR; except FreeMem(ptr); raise; @@ -626,6 +628,7 @@ implementation begin nrec := LEtoN(s.ReadWord()); section := ''; + sec := nil; for i := 0 to nrec - 1 do begin s.ReadBuffer(name1251[0], 16); @@ -644,6 +647,8 @@ implementation begin if sec = nil then sec := InsertSectionRAW(''); + if sec = nil then + raise Exception.Create('Failed to create root section'); res := InsertFileInfoS(sec, name, offset, csize, -1, nil); if res = nil then raise Exception.Create('Failed to register resource [' + section + '][' + name + ']'); @@ -671,24 +676,15 @@ implementation FreeWAD(); Result := False; try + s := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try - s := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); - try - ReadFromStream(s); - FStream := s; - FLastError := DFWAD_NOERROR; - Result := True; - except - s.Free(); - raise; - end; + ReadFromStream(s); + FStream := s; + FLastError := DFWAD_NOERROR; + Result := True; except - on e: Exception do - begin - if gWADEditorLogLevel >= DFWAD_LOG_INFO then - e_WriteLog('DFWAD: Failed to read DFWAD from file ' + FileName + ', reason: ' + e.Message, MSG_WARNING); - Clear(); - end; + s.Free(); + raise; end; except on e: EFOpenError do @@ -700,6 +696,12 @@ implementation else FLastError := DFWAD_ERROR_WADNOTFOUND; end; + on e: Exception do + begin + if gWADEditorLogLevel >= DFWAD_LOG_INFO then + e_WriteLog('DFWAD: Failed to read DFWAD from file ' + FileName + ', reason: ' + e.Message, MSG_WARNING); + Clear(); + end; end; end;