@@ -92,60 +92,63 @@ IMalloc *GetGlobalHeapMalloc() throw() {
9292}
9393
9494_Use_decl_annotations_
95- void ReadBinaryFile (IMalloc *pMalloc, LPCWSTR pFileName, void **ppData,
96- DWORD *pDataSize) {
95+ HRESULT ReadBinaryFile (IMalloc *pMalloc, LPCWSTR pFileName, void **ppData,
96+ DWORD *pDataSize) throw() {
9797 HANDLE hFile = CreateFileW (pFileName, GENERIC_READ, FILE_SHARE_READ, NULL ,
9898 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr );
9999 if (hFile == INVALID_HANDLE_VALUE) {
100- IFT ( HRESULT_FROM_WIN32 (GetLastError () ));
100+ return HRESULT_FROM_WIN32 (GetLastError ());
101101 }
102102
103103 CHandle h (hFile);
104104
105105 LARGE_INTEGER FileSize;
106106 if (!GetFileSizeEx (hFile, &FileSize)) {
107- IFT ( HRESULT_FROM_WIN32 (GetLastError () ));
107+ return HRESULT_FROM_WIN32 (GetLastError ());
108108 }
109109 if (FileSize.u .HighPart != 0 ) {
110- throw ( hlsl::Exception (DXC_E_INPUT_FILE_TOO_LARGE, " input file is too large " )) ;
110+ return DXC_E_INPUT_FILE_TOO_LARGE ;
111111 }
112112
113113 char *pData = (char *)pMalloc->Alloc (FileSize.u .LowPart );
114114 if (!pData) {
115- throw std::bad_alloc () ;
115+ return E_OUTOFMEMORY ;
116116 }
117117
118118 DWORD BytesRead;
119119 if (!ReadFile (hFile, pData, FileSize.u .LowPart , &BytesRead, nullptr )) {
120120 HRESULT hr = HRESULT_FROM_WIN32 (GetLastError ());
121121 pMalloc->Free (pData);
122- throw ::hlsl::Exception (hr) ;
122+ return hr ;
123123 }
124124 DXASSERT (FileSize.u .LowPart == BytesRead, " ReadFile operation failed" );
125125
126126 *ppData = pData;
127127 *pDataSize = FileSize.u .LowPart ;
128128
129+ return S_OK;
129130}
130131
131132_Use_decl_annotations_
132- void ReadBinaryFile (LPCWSTR pFileName, void **ppData, DWORD *pDataSize) {
133+ HRESULT ReadBinaryFile (LPCWSTR pFileName, void **ppData, DWORD *pDataSize) throw( ) {
133134 return ReadBinaryFile (GetGlobalHeapMalloc (), pFileName, ppData, pDataSize);
134135}
135136
136137_Use_decl_annotations_
137- void WriteBinaryFile (LPCWSTR pFileName, const void *pData, DWORD DataSize) {
138+ HRESULT WriteBinaryFile (LPCWSTR pFileName, const void *pData, DWORD DataSize) throw( ) {
138139 HANDLE hFile = CreateFileW (pFileName, GENERIC_WRITE, 0 , NULL , CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr );
139140 if (hFile == INVALID_HANDLE_VALUE) {
140- IFT ( HRESULT_FROM_WIN32 (GetLastError () ));
141+ return HRESULT_FROM_WIN32 (GetLastError ());
141142 }
142143 CHandle h (hFile);
143144
144145 DWORD BytesWritten;
145146 if (!WriteFile (hFile, pData, DataSize, &BytesWritten, nullptr )) {
146- IFT ( HRESULT_FROM_WIN32 (GetLastError () ));
147+ return HRESULT_FROM_WIN32 (GetLastError ());
147148 }
148149 DXASSERT (DataSize == BytesWritten, " WriteFile operation failed" );
150+
151+ return S_OK;
149152}
150153
151154_Use_decl_annotations_
@@ -825,15 +828,15 @@ DxcCreateBlobFromFile(IMalloc *pMalloc, LPCWSTR pFileName, UINT32 *pCodePage,
825828 LPVOID pData;
826829 DWORD dataSize;
827830 *ppBlobEncoding = nullptr ;
828- try {
829- ReadBinaryFile (pMalloc, pFileName, &pData, &dataSize);
830- }
831- CATCH_CPP_RETURN_HRESULT () ;
831+
832+ HRESULT hr = ReadBinaryFile (pMalloc, pFileName, &pData, &dataSize);
833+ if ( FAILED (hr))
834+ return hr ;
832835
833836 bool known = (pCodePage != nullptr );
834837 UINT32 codePage = (pCodePage != nullptr ) ? *pCodePage : 0 ;
835838
836- HRESULT hr = DxcCreateBlob (pData, dataSize, false , false , known, codePage, pMalloc, ppBlobEncoding);
839+ hr = DxcCreateBlob (pData, dataSize, false , false , known, codePage, pMalloc, ppBlobEncoding);
837840 if (FAILED (hr))
838841 pMalloc->Free (pData);
839842 return hr;
0 commit comments