Index: ext/libicpf/src/libicpf/file.h =================================================================== diff -u -N -rcc897193e71c0650a9226ce4c2fbb4430b1460d6 -ref6c75aa057c06ecd065137ee9e459c431806e8a --- ext/libicpf/src/libicpf/file.h (.../file.h) (revision cc897193e71c0650a9226ce4c2fbb4430b1460d6) +++ ext/libicpf/src/libicpf/file.h (.../file.h) (revision ef6c75aa057c06ecd065137ee9e459c431806e8a) @@ -287,10 +287,23 @@ rFile >> stCount; if(stCount) { - PTSTR pszBuffer = str.GetBufferSetLength((int)(stCount + 1)); - rFile.sread((ptr_t)pszBuffer, (uint_t)stCount * sizeof(tchar_t)); - pszBuffer[stCount] = _T('\0'); - str.ReleaseBuffer(); + try + { + PTSTR pszBuffer = str.GetBufferSetLength((int)(stCount + 1)); + rFile.sread((ptr_t)pszBuffer, (uint_t)stCount * sizeof(tchar_t)); + pszBuffer[stCount] = _T('\0'); + str.ReleaseBuffer(); + } + catch(CMemoryException* e) + { + e->Delete(); + THROW(_T("Memory exception intercepted"), 0, ERROR_READ_FAULT, 0); + } + catch(COleException* e) + { + e->Delete(); + THROW(_T("Ole exception intercepted"), 0, ERROR_READ_FAULT, 0); + } } return rFile; }