https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e98e9000c7e67e8293628…
commit e98e9000c7e67e8293628c82e8342a6fab69697e
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Sat Oct 12 00:05:27 2024 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Thu Jan 16 14:18:53 2025 +0200
[UCRT] Make SEH blocks ReactOS PSEH compatible
---
sdk/lib/ucrt/conio/cgets.cpp | 1 +
sdk/lib/ucrt/conio/cgetws.cpp | 1 +
sdk/lib/ucrt/conio/cputs.cpp | 1 +
sdk/lib/ucrt/conio/cputws.cpp | 1 +
sdk/lib/ucrt/conio/getch.cpp | 5 +++++
sdk/lib/ucrt/conio/getwch.cpp | 4 ++++
sdk/lib/ucrt/conio/pipe.cpp | 2 ++
sdk/lib/ucrt/conio/popen.cpp | 2 ++
sdk/lib/ucrt/env/getenv.cpp | 3 +++
sdk/lib/ucrt/env/putenv.cpp | 1 +
sdk/lib/ucrt/heap/debug_heap.cpp | 14 ++++++++++++++
sdk/lib/ucrt/heap/heapwalk.cpp | 1 +
sdk/lib/ucrt/heap/new_handler.cpp | 2 ++
sdk/lib/ucrt/inc/internal_shared.h | 1 +
sdk/lib/ucrt/locale/locale_refcounting.cpp | 1 +
sdk/lib/ucrt/locale/wsetlocale.cpp | 2 ++
sdk/lib/ucrt/lowio/dup.cpp | 1 +
sdk/lib/ucrt/lowio/dup2.cpp | 1 +
sdk/lib/ucrt/lowio/filelength.cpp | 1 +
sdk/lib/ucrt/lowio/ioinit.cpp | 1 +
sdk/lib/ucrt/lowio/locking.cpp | 1 +
sdk/lib/ucrt/lowio/lseek.cpp | 1 +
sdk/lib/ucrt/lowio/open.cpp | 2 ++
sdk/lib/ucrt/lowio/osfinfo.cpp | 3 +++
sdk/lib/ucrt/lowio/read.cpp | 1 +
sdk/lib/ucrt/lowio/setmode.cpp | 1 +
sdk/lib/ucrt/lowio/write.cpp | 1 +
sdk/lib/ucrt/mbstring/mbctype.cpp | 1 +
sdk/lib/ucrt/misc/dbgrptt.cpp | 4 ++++
sdk/lib/ucrt/misc/perror.cpp | 1 +
sdk/lib/ucrt/misc/signal.cpp | 3 +++
sdk/lib/ucrt/misc/terminate.cpp | 1 +
sdk/lib/ucrt/startup/exit.cpp | 1 +
sdk/lib/ucrt/startup/thread.cpp | 1 +
sdk/lib/ucrt/stdio/clearerr.cpp | 1 +
sdk/lib/ucrt/stdio/closeall.cpp | 1 +
sdk/lib/ucrt/stdio/fclose.cpp | 1 +
sdk/lib/ucrt/stdio/fdopen.cpp | 1 +
sdk/lib/ucrt/stdio/fgetc.cpp | 1 +
sdk/lib/ucrt/stdio/fgets.cpp | 1 +
sdk/lib/ucrt/stdio/fgetwc.cpp | 1 +
sdk/lib/ucrt/stdio/fopen.cpp | 1 +
sdk/lib/ucrt/stdio/fputc.cpp | 1 +
sdk/lib/ucrt/stdio/fputwc.cpp | 1 +
sdk/lib/ucrt/stdio/fread.cpp | 1 +
sdk/lib/ucrt/stdio/freopen.cpp | 1 +
sdk/lib/ucrt/stdio/fseek.cpp | 1 +
sdk/lib/ucrt/stdio/ftell.cpp | 1 +
sdk/lib/ucrt/stdio/gets.cpp | 1 +
sdk/lib/ucrt/stdio/getw.cpp | 1 +
sdk/lib/ucrt/stdio/putw.cpp | 1 +
sdk/lib/ucrt/stdio/rewind.cpp | 1 +
sdk/lib/ucrt/stdio/rmtmp.cpp | 2 ++
sdk/lib/ucrt/stdio/stream.cpp | 1 +
sdk/lib/ucrt/stdio/tempnam.cpp | 1 +
sdk/lib/ucrt/stdio/tmpfile.cpp | 3 +++
sdk/lib/ucrt/stdio/ungetc.cpp | 1 +
sdk/lib/ucrt/stdio/ungetwc.cpp | 1 +
sdk/lib/ucrt/time/tzset.cpp | 3 +++
59 files changed, 98 insertions(+)
diff --git a/sdk/lib/ucrt/conio/cgets.cpp b/sdk/lib/ucrt/conio/cgets.cpp
index fe3fffea718..7ec4ae6dcfe 100644
--- a/sdk/lib/ucrt/conio/cgets.cpp
+++ b/sdk/lib/ucrt/conio/cgets.cpp
@@ -91,6 +91,7 @@ extern "C" errno_t __cdecl _cgets_s(char* const source_string,
size_t const size
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
*string++ = '\0';
diff --git a/sdk/lib/ucrt/conio/cgetws.cpp b/sdk/lib/ucrt/conio/cgetws.cpp
index 0149e82b2b4..3b40b722a3c 100644
--- a/sdk/lib/ucrt/conio/cgetws.cpp
+++ b/sdk/lib/ucrt/conio/cgetws.cpp
@@ -121,6 +121,7 @@ extern "C" errno_t __cdecl _cgetws_s(wchar_t* const
string_buffer, size_t const
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return retval;
}
diff --git a/sdk/lib/ucrt/conio/cputs.cpp b/sdk/lib/ucrt/conio/cputs.cpp
index 58e312d37c6..96e2232b544 100644
--- a/sdk/lib/ucrt/conio/cputs.cpp
+++ b/sdk/lib/ucrt/conio/cputs.cpp
@@ -34,5 +34,6 @@ extern "C" int __cdecl _cputs(char const* const string)
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/conio/cputws.cpp b/sdk/lib/ucrt/conio/cputws.cpp
index 2a16e4fac0a..fcede25a0cb 100644
--- a/sdk/lib/ucrt/conio/cputws.cpp
+++ b/sdk/lib/ucrt/conio/cputws.cpp
@@ -58,6 +58,7 @@ extern "C" int __cdecl _cputws(wchar_t const* string)
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/conio/getch.cpp b/sdk/lib/ucrt/conio/getch.cpp
index 0a8699b8053..9850aaf0cbc 100644
--- a/sdk/lib/ucrt/conio/getch.cpp
+++ b/sdk/lib/ucrt/conio/getch.cpp
@@ -254,6 +254,7 @@ extern "C" int __cdecl _getch()
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
@@ -269,6 +270,7 @@ extern "C" int __cdecl _getche()
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
@@ -353,6 +355,7 @@ extern "C" int __cdecl _getch_nolock()
// Restore the previous console mode:
__dcrt_set_input_console_mode(old_console_mode);
}
+ __endtry
return result;
}
@@ -394,6 +397,7 @@ extern "C" int __cdecl _kbhit()
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
@@ -472,6 +476,7 @@ extern "C" int __cdecl _ungetch(int const c)
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/conio/getwch.cpp b/sdk/lib/ucrt/conio/getwch.cpp
index cfc0a8ab7ac..f8fe8dd1a36 100644
--- a/sdk/lib/ucrt/conio/getwch.cpp
+++ b/sdk/lib/ucrt/conio/getwch.cpp
@@ -51,6 +51,7 @@ extern "C" wint_t __cdecl _getwch()
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
@@ -67,6 +68,7 @@ extern "C" wint_t __cdecl _getwche()
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
@@ -140,6 +142,7 @@ extern "C" wint_t __cdecl _getwch_nolock()
// Restore the previous console mode:
__dcrt_set_input_console_mode(old_console_mode);
}
+ __endtry
return result;
}
@@ -185,6 +188,7 @@ extern "C" wint_t __cdecl _ungetwch(wint_t const c)
{
__acrt_unlock(__acrt_conio_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/conio/pipe.cpp b/sdk/lib/ucrt/conio/pipe.cpp
index 17bb5b0ee83..33b5ffd4b69 100644
--- a/sdk/lib/ucrt/conio/pipe.cpp
+++ b/sdk/lib/ucrt/conio/pipe.cpp
@@ -61,6 +61,7 @@ extern "C" int __cdecl _pipe(int* const phandles, unsigned
const psize, int cons
{
__acrt_lowio_unlock_fh(crt_read_handle);
}
+ __endtry
// Create the CRT write handle for the pipe:
int const crt_write_handle = _alloc_osfhnd();
@@ -84,6 +85,7 @@ extern "C" int __cdecl _pipe(int* const phandles, unsigned
const psize, int cons
{
__acrt_lowio_unlock_fh(crt_write_handle);
}
+ __endtry
// Figure out which textmode the file gets:
int fmode = 0;
diff --git a/sdk/lib/ucrt/conio/popen.cpp b/sdk/lib/ucrt/conio/popen.cpp
index 77d73495530..f1a524cfae4 100644
--- a/sdk/lib/ucrt/conio/popen.cpp
+++ b/sdk/lib/ucrt/conio/popen.cpp
@@ -400,6 +400,7 @@ static FILE* __cdecl common_popen(
{
__acrt_unlock(__acrt_popen_lock);
}
+ __endtry
return return_value;
}
@@ -483,6 +484,7 @@ extern "C" int __cdecl _pclose(FILE* const stream)
{
__acrt_unlock(__acrt_popen_lock);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/env/getenv.cpp b/sdk/lib/ucrt/env/getenv.cpp
index 5e9c24894ef..05faf989d6a 100644
--- a/sdk/lib/ucrt/env/getenv.cpp
+++ b/sdk/lib/ucrt/env/getenv.cpp
@@ -76,6 +76,7 @@ static Character* __cdecl common_getenv(Character const* const name)
throw()
{
__acrt_unlock(__acrt_environment_lock);
}
+ __endtry
return result;
}
@@ -160,6 +161,7 @@ static errno_t __cdecl common_getenv_s(
{
__acrt_unlock(__acrt_environment_lock);
}
+ __endtry
return status;
}
@@ -275,6 +277,7 @@ static errno_t __cdecl common_dupenv_s(
{
__acrt_unlock(__acrt_environment_lock);
}
+ __endtry
return status;
}
diff --git a/sdk/lib/ucrt/env/putenv.cpp b/sdk/lib/ucrt/env/putenv.cpp
index 0c8a03df005..09e504eed39 100644
--- a/sdk/lib/ucrt/env/putenv.cpp
+++ b/sdk/lib/ucrt/env/putenv.cpp
@@ -212,6 +212,7 @@ static int __cdecl common_putenv(
{
__acrt_unlock(__acrt_environment_lock);
}
+ __endtry
return status;
}
diff --git a/sdk/lib/ucrt/heap/debug_heap.cpp b/sdk/lib/ucrt/heap/debug_heap.cpp
index 0a8841e0c5e..0c3f9d0153a 100644
--- a/sdk/lib/ucrt/heap/debug_heap.cpp
+++ b/sdk/lib/ucrt/heap/debug_heap.cpp
@@ -241,6 +241,7 @@ static bool __cdecl is_bad_read_pointer(void const* const p, size_t
const size)
{
return true;
}
+ __endtry
return false;
}
@@ -285,6 +286,7 @@ static void __cdecl validate_heap_if_required_nolock() throw()
{
heap_validation_pending = false;
}
+ __endtry
__acrt_check_counter = 0;
}
@@ -431,6 +433,7 @@ static void* __cdecl heap_alloc_dbg_internal(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return block;
}
@@ -763,6 +766,7 @@ extern "C" __declspec(noinline) void* __cdecl _realloc_dbg(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return new_block;
}
@@ -835,6 +839,7 @@ extern "C" __declspec(noinline) void* __cdecl _expand_dbg(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return new_block;
}
@@ -1035,6 +1040,7 @@ extern "C" __declspec(noinline) void __cdecl
_free_dbg(void* const block, int co
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
}
@@ -1070,6 +1076,7 @@ extern "C" __declspec(noinline) size_t __cdecl
_msize_dbg(void* const block, int
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return size;
}
@@ -1115,6 +1122,7 @@ extern "C" void __cdecl _CrtSetDbgBlockType(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
}
@@ -1301,6 +1309,7 @@ extern "C" int __cdecl _CrtCheckMemory()
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return all_okay ? TRUE : FALSE;
}
@@ -1344,6 +1353,7 @@ extern "C" int __cdecl _CrtSetDbgFlag(int const new_bits)
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return old_bits;
}
@@ -1374,6 +1384,7 @@ extern "C" void __cdecl _CrtDoForAllClientObjects(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
}
@@ -1469,6 +1480,7 @@ extern "C" int __cdecl _CrtIsMemoryBlock(
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return result;
}
@@ -1547,6 +1559,7 @@ extern "C" void __cdecl _CrtMemCheckpoint(_CrtMemState*
const state)
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
}
@@ -1701,6 +1714,7 @@ extern "C" void __cdecl
_CrtMemDumpAllObjectsSince(_CrtMemState const* const sta
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
_RPT0(_CRT_WARN, "Object dump complete.\n");
}
diff --git a/sdk/lib/ucrt/heap/heapwalk.cpp b/sdk/lib/ucrt/heap/heapwalk.cpp
index dfaf91181ed..27b6745beb7 100644
--- a/sdk/lib/ucrt/heap/heapwalk.cpp
+++ b/sdk/lib/ucrt/heap/heapwalk.cpp
@@ -28,6 +28,7 @@ static int __cdecl try_walk(PROCESS_HEAP_ENTRY* const win32_entry)
throw()
{
return _HEAPBADNODE;
}
+ __endtry
}
// Walks the heap, returning information on one entry at a time. If there are
diff --git a/sdk/lib/ucrt/heap/new_handler.cpp b/sdk/lib/ucrt/heap/new_handler.cpp
index a0866eeb914..801da85897a 100644
--- a/sdk/lib/ucrt/heap/new_handler.cpp
+++ b/sdk/lib/ucrt/heap/new_handler.cpp
@@ -35,6 +35,7 @@ _PNH __cdecl _set_new_handler(_PNH new_handler)
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return result;
}
@@ -65,6 +66,7 @@ _PNH __cdecl _query_new_handler()
{
__acrt_unlock(__acrt_heap_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/inc/internal_shared.h b/sdk/lib/ucrt/inc/internal_shared.h
index a5f50f0f681..d4234e7cdf7 100644
--- a/sdk/lib/ucrt/inc/internal_shared.h
+++ b/sdk/lib/ucrt/inc/internal_shared.h
@@ -158,6 +158,7 @@ struct __crt_seh_guarded_call
{
cleanup();
}
+ __endtry
}
};
diff --git a/sdk/lib/ucrt/locale/locale_refcounting.cpp
b/sdk/lib/ucrt/locale/locale_refcounting.cpp
index c949b2036c7..b9731136f47 100644
--- a/sdk/lib/ucrt/locale/locale_refcounting.cpp
+++ b/sdk/lib/ucrt/locale/locale_refcounting.cpp
@@ -280,6 +280,7 @@ extern "C" __crt_locale_data* __cdecl
__acrt_update_thread_locale_data()
{
__acrt_unlock(__acrt_locale_lock);
}
+ __endtry
}
else
{
diff --git a/sdk/lib/ucrt/locale/wsetlocale.cpp b/sdk/lib/ucrt/locale/wsetlocale.cpp
index da3b6d834f6..f7b309dab71 100644
--- a/sdk/lib/ucrt/locale/wsetlocale.cpp
+++ b/sdk/lib/ucrt/locale/wsetlocale.cpp
@@ -168,6 +168,7 @@ void __cdecl _free_locale(
{
__acrt_unlock(__acrt_multibyte_cp_lock);
}
+ __endtry
if (plocinfo->locinfo != nullptr)
{
@@ -191,6 +192,7 @@ void __cdecl _free_locale(
{
__acrt_unlock(__acrt_locale_lock);
}
+ __endtry
}
_free_crt(plocinfo);
diff --git a/sdk/lib/ucrt/lowio/dup.cpp b/sdk/lib/ucrt/lowio/dup.cpp
index dc170b62f49..0bea1ae87ad 100644
--- a/sdk/lib/ucrt/lowio/dup.cpp
+++ b/sdk/lib/ucrt/lowio/dup.cpp
@@ -72,6 +72,7 @@ static int __cdecl _dup_nolock_internal(int const fh,
__crt_cached_ptd_host& ptd
__acrt_lowio_unlock_fh(new_fh);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/lowio/dup2.cpp b/sdk/lib/ucrt/lowio/dup2.cpp
index 1b38c7c6b7b..453bd9b5614 100644
--- a/sdk/lib/ucrt/lowio/dup2.cpp
+++ b/sdk/lib/ucrt/lowio/dup2.cpp
@@ -105,6 +105,7 @@ static int __cdecl _dup2_internal(int const source_fh, int const
target_fh, __cr
__acrt_lowio_unlock_fh(source_fh);
__acrt_lowio_unlock_fh(target_fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/filelength.cpp b/sdk/lib/ucrt/lowio/filelength.cpp
index 595b8906ca8..f9b6577ac16 100644
--- a/sdk/lib/ucrt/lowio/filelength.cpp
+++ b/sdk/lib/ucrt/lowio/filelength.cpp
@@ -48,6 +48,7 @@ static Integer __cdecl common_filelength(int const fh) throw()
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return end;
}
diff --git a/sdk/lib/ucrt/lowio/ioinit.cpp b/sdk/lib/ucrt/lowio/ioinit.cpp
index 5a3e858607c..452f4011339 100644
--- a/sdk/lib/ucrt/lowio/ioinit.cpp
+++ b/sdk/lib/ucrt/lowio/ioinit.cpp
@@ -242,6 +242,7 @@ extern "C" bool __cdecl __acrt_initialize_lowio()
{
__acrt_unlock(__acrt_lowio_index_lock);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/locking.cpp b/sdk/lib/ucrt/lowio/locking.cpp
index 6f62a514da9..8f7dda92b51 100644
--- a/sdk/lib/ucrt/lowio/locking.cpp
+++ b/sdk/lib/ucrt/lowio/locking.cpp
@@ -116,5 +116,6 @@ extern "C" int __cdecl _locking(int const fh, int const
locking_mode, long const
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/lseek.cpp b/sdk/lib/ucrt/lowio/lseek.cpp
index 35f41aec86b..e0bbd9f0967 100644
--- a/sdk/lib/ucrt/lowio/lseek.cpp
+++ b/sdk/lib/ucrt/lowio/lseek.cpp
@@ -123,6 +123,7 @@ static Integer __cdecl common_lseek(int const fh, Integer const
offset, int cons
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/open.cpp b/sdk/lib/ucrt/lowio/open.cpp
index 941f331b91e..62e92d108c5 100644
--- a/sdk/lib/ucrt/lowio/open.cpp
+++ b/sdk/lib/ucrt/lowio/open.cpp
@@ -110,6 +110,7 @@ static int __cdecl common_open(
__acrt_lowio_unlock_fh(fh);
}
}
+ __endtry
if (error_code != 0)
{
@@ -182,6 +183,7 @@ static errno_t __cdecl common_sopen_dispatch(
__acrt_lowio_unlock_fh(*pfh);
}
}
+ __endtry
if (error_code != 0)
{
diff --git a/sdk/lib/ucrt/lowio/osfinfo.cpp b/sdk/lib/ucrt/lowio/osfinfo.cpp
index 89a866b9de3..e7687732f71 100644
--- a/sdk/lib/ucrt/lowio/osfinfo.cpp
+++ b/sdk/lib/ucrt/lowio/osfinfo.cpp
@@ -93,6 +93,7 @@ extern "C" errno_t __cdecl __acrt_lowio_ensure_fh_exists(int
const fh)
{
__acrt_unlock(__acrt_lowio_index_lock);
}
+ __endtry
return status;
}
@@ -183,6 +184,7 @@ extern "C" int __cdecl _alloc_osfhnd()
{
__acrt_unlock(__acrt_lowio_index_lock);
}
+ __endtry
return result;
}
@@ -328,6 +330,7 @@ extern "C" int __cdecl _open_osfhandle(intptr_t const
osfhandle, int const sourc
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return fh;
}
diff --git a/sdk/lib/ucrt/lowio/read.cpp b/sdk/lib/ucrt/lowio/read.cpp
index ee5a3cf2256..d9814556876 100644
--- a/sdk/lib/ucrt/lowio/read.cpp
+++ b/sdk/lib/ucrt/lowio/read.cpp
@@ -399,6 +399,7 @@ extern "C" int __cdecl _read(int const fh, void* const
buffer, unsigned const bu
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/setmode.cpp b/sdk/lib/ucrt/lowio/setmode.cpp
index 414a4e5a705..5c465f4bc16 100644
--- a/sdk/lib/ucrt/lowio/setmode.cpp
+++ b/sdk/lib/ucrt/lowio/setmode.cpp
@@ -46,6 +46,7 @@ extern "C" int __cdecl _setmode(int const fh, int const mode)
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/lowio/write.cpp b/sdk/lib/ucrt/lowio/write.cpp
index 302d6de5f97..c251a53d4a5 100644
--- a/sdk/lib/ucrt/lowio/write.cpp
+++ b/sdk/lib/ucrt/lowio/write.cpp
@@ -68,6 +68,7 @@ extern "C" int __cdecl _write_internal(int const fh, void
const* const buffer, u
{
__acrt_lowio_unlock_fh(fh);
}
+ __endtry
return result;
}
diff --git a/sdk/lib/ucrt/mbstring/mbctype.cpp b/sdk/lib/ucrt/mbstring/mbctype.cpp
index 4d2f7f1e35f..c02db844d60 100644
--- a/sdk/lib/ucrt/mbstring/mbctype.cpp
+++ b/sdk/lib/ucrt/mbstring/mbctype.cpp
@@ -343,6 +343,7 @@ static __crt_multibyte_data* __cdecl
update_thread_multibyte_data_internal(
{
__acrt_unlock(__acrt_multibyte_cp_lock);
}
+ __endtry
}
else
{
diff --git a/sdk/lib/ucrt/misc/dbgrptt.cpp b/sdk/lib/ucrt/misc/dbgrptt.cpp
index f46f9488efa..ee3a23ef76a 100644
--- a/sdk/lib/ucrt/misc/dbgrptt.cpp
+++ b/sdk/lib/ucrt/misc/dbgrptt.cpp
@@ -380,6 +380,7 @@ int __cdecl _VCrtDbgReportA(
{
__acrt_unlock(__acrt_debug_lock);
}
+ __endtry
}
if (handled)
@@ -427,6 +428,7 @@ int __cdecl _VCrtDbgReportA(
_InterlockedDecrement(&_crtAssertBusy);
}
}
+ __endtry
return retval;
}
@@ -602,6 +604,7 @@ int __cdecl _VCrtDbgReportW
{
__acrt_unlock(__acrt_debug_lock);
}
+ __endtry
}
if (handled)
@@ -680,6 +683,7 @@ int __cdecl _VCrtDbgReportW
_InterlockedDecrement(&_crtAssertBusy);
}
}
+ __endtry
return retval;
}
diff --git a/sdk/lib/ucrt/misc/perror.cpp b/sdk/lib/ucrt/misc/perror.cpp
index 319649bbba9..2fa4c2e0465 100644
--- a/sdk/lib/ucrt/misc/perror.cpp
+++ b/sdk/lib/ucrt/misc/perror.cpp
@@ -62,6 +62,7 @@ static void __cdecl _perror_internal(char const* const user_prefix,
__crt_cached
{
__acrt_lowio_unlock_fh( fh );
}
+ __endtry
}
extern "C" void __cdecl perror(char const* const user_prefix)
diff --git a/sdk/lib/ucrt/misc/signal.cpp b/sdk/lib/ucrt/misc/signal.cpp
index 457e2b6504f..9be5453c6bc 100644
--- a/sdk/lib/ucrt/misc/signal.cpp
+++ b/sdk/lib/ucrt/misc/signal.cpp
@@ -195,6 +195,7 @@ static BOOL WINAPI ctrlevent_capture(DWORD const ctrl_type) throw()
{
__acrt_unlock(__acrt_signal_lock);
}
+ __endtry
// The default signal action leaves the event unhandled, so return false to
// indicate such:
@@ -333,6 +334,7 @@ extern "C" __crt_signal_handler_t __cdecl signal(int signum,
__crt_signal_handle
{
__acrt_unlock(__acrt_signal_lock);
}
+ __endtry
if (set_console_ctrl_error)
return signal_failed(signum);
@@ -525,6 +527,7 @@ extern "C" int __cdecl raise(int const signum)
if (action_is_global)
__acrt_unlock(__acrt_signal_lock);
}
+ __endtry
if (return0)
return 0;
diff --git a/sdk/lib/ucrt/misc/terminate.cpp b/sdk/lib/ucrt/misc/terminate.cpp
index b62854c7d64..10cd6504064 100644
--- a/sdk/lib/ucrt/misc/terminate.cpp
+++ b/sdk/lib/ucrt/misc/terminate.cpp
@@ -51,6 +51,7 @@ extern "C" void __cdecl terminate() throw()
{
; // Deliberately do nothing
}
+ __endtry
}
// If the terminate handler returned, faulted, or otherwise failed to end
diff --git a/sdk/lib/ucrt/startup/exit.cpp b/sdk/lib/ucrt/startup/exit.cpp
index cc680c175ff..0b3ee5ba814 100644
--- a/sdk/lib/ucrt/startup/exit.cpp
+++ b/sdk/lib/ucrt/startup/exit.cpp
@@ -228,6 +228,7 @@ static void __cdecl common_exit(
{
terminate();
}
+ __endtry
#ifndef CRTDLL
// When the CRT is statically linked, we are responsible for executing
diff --git a/sdk/lib/ucrt/startup/thread.cpp b/sdk/lib/ucrt/startup/thread.cpp
index 00ce20d8b21..63884e65199 100644
--- a/sdk/lib/ucrt/startup/thread.cpp
+++ b/sdk/lib/ucrt/startup/thread.cpp
@@ -107,6 +107,7 @@ static unsigned long WINAPI thread_start(void* const parameter)
throw()
// Execution should never reach here:
_exit(GetExceptionCode());
}
+ __endtry
// This return statement will never be reached. All execution paths result
// in the thread or process exiting.
diff --git a/sdk/lib/ucrt/stdio/clearerr.cpp b/sdk/lib/ucrt/stdio/clearerr.cpp
index d3a0afcdd77..8ce8a4f05d1 100644
--- a/sdk/lib/ucrt/stdio/clearerr.cpp
+++ b/sdk/lib/ucrt/stdio/clearerr.cpp
@@ -25,6 +25,7 @@ extern "C" errno_t __cdecl clearerr_s(FILE* const
public_stream)
{
_unlock_file(stream.public_stream());
}
+ __endtry
return 0;
}
diff --git a/sdk/lib/ucrt/stdio/closeall.cpp b/sdk/lib/ucrt/stdio/closeall.cpp
index cb537957fe2..c857169230d 100644
--- a/sdk/lib/ucrt/stdio/closeall.cpp
+++ b/sdk/lib/ucrt/stdio/closeall.cpp
@@ -39,6 +39,7 @@ extern "C" int __cdecl _fcloseall()
{
__acrt_unlock(__acrt_stdio_index_lock);
}
+ __endtry
return count;
}
diff --git a/sdk/lib/ucrt/stdio/fclose.cpp b/sdk/lib/ucrt/stdio/fclose.cpp
index b4c120cb686..a538f4e187e 100644
--- a/sdk/lib/ucrt/stdio/fclose.cpp
+++ b/sdk/lib/ucrt/stdio/fclose.cpp
@@ -75,6 +75,7 @@ static int __cdecl _fclose_internal(FILE* const public_stream,
__crt_cached_ptd_
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fdopen.cpp b/sdk/lib/ucrt/stdio/fdopen.cpp
index 9edbf11d316..ab5062b78b3 100644
--- a/sdk/lib/ucrt/stdio/fdopen.cpp
+++ b/sdk/lib/ucrt/stdio/fdopen.cpp
@@ -53,6 +53,7 @@ static FILE* __cdecl common_fdopen(
{
stream.unlock();
}
+ __endtry
return stream.public_stream();
}
diff --git a/sdk/lib/ucrt/stdio/fgetc.cpp b/sdk/lib/ucrt/stdio/fgetc.cpp
index ba589ec13cc..d18888ac482 100644
--- a/sdk/lib/ucrt/stdio/fgetc.cpp
+++ b/sdk/lib/ucrt/stdio/fgetc.cpp
@@ -55,6 +55,7 @@ extern "C" int __cdecl fgetc(FILE* const public_stream)
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fgets.cpp b/sdk/lib/ucrt/stdio/fgets.cpp
index 332c9df3ad7..0f7d17a7738 100644
--- a/sdk/lib/ucrt/stdio/fgets.cpp
+++ b/sdk/lib/ucrt/stdio/fgets.cpp
@@ -75,6 +75,7 @@ static Character* __cdecl common_fgets(
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fgetwc.cpp b/sdk/lib/ucrt/stdio/fgetwc.cpp
index bdf0efa5236..715410553f4 100644
--- a/sdk/lib/ucrt/stdio/fgetwc.cpp
+++ b/sdk/lib/ucrt/stdio/fgetwc.cpp
@@ -110,6 +110,7 @@ extern "C" wint_t __cdecl fgetwc(FILE* const stream)
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fopen.cpp b/sdk/lib/ucrt/stdio/fopen.cpp
index 2ca0eba7ba3..aace2ba7eae 100644
--- a/sdk/lib/ucrt/stdio/fopen.cpp
+++ b/sdk/lib/ucrt/stdio/fopen.cpp
@@ -60,6 +60,7 @@ static FILE* __cdecl common_fsopen(
stream.unlock();
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fputc.cpp b/sdk/lib/ucrt/stdio/fputc.cpp
index f4e3453f9be..e191289990c 100644
--- a/sdk/lib/ucrt/stdio/fputc.cpp
+++ b/sdk/lib/ucrt/stdio/fputc.cpp
@@ -60,6 +60,7 @@ static int __cdecl _fputc_internal(int const c, FILE* const stream,
__crt_cached
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fputwc.cpp b/sdk/lib/ucrt/stdio/fputwc.cpp
index d5cfc5acef7..be357b2db67 100644
--- a/sdk/lib/ucrt/stdio/fputwc.cpp
+++ b/sdk/lib/ucrt/stdio/fputwc.cpp
@@ -110,6 +110,7 @@ static wint_t __cdecl _fputwc_internal(wchar_t const c, FILE* const
stream, __cr
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fread.cpp b/sdk/lib/ucrt/stdio/fread.cpp
index 04326dbdbca..5e607ad567d 100644
--- a/sdk/lib/ucrt/stdio/fread.cpp
+++ b/sdk/lib/ucrt/stdio/fread.cpp
@@ -59,6 +59,7 @@ extern "C" size_t __cdecl fread_s(
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/freopen.cpp b/sdk/lib/ucrt/stdio/freopen.cpp
index fe6bf2cc4c7..c8a3b26e366 100644
--- a/sdk/lib/ucrt/stdio/freopen.cpp
+++ b/sdk/lib/ucrt/stdio/freopen.cpp
@@ -79,6 +79,7 @@ static errno_t __cdecl common_freopen(
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/fseek.cpp b/sdk/lib/ucrt/stdio/fseek.cpp
index b635bc31cfb..4a6ea859e6c 100644
--- a/sdk/lib/ucrt/stdio/fseek.cpp
+++ b/sdk/lib/ucrt/stdio/fseek.cpp
@@ -194,6 +194,7 @@ static int __cdecl common_fseek(
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/ftell.cpp b/sdk/lib/ucrt/stdio/ftell.cpp
index b1b4321300b..e93c19c0884 100644
--- a/sdk/lib/ucrt/stdio/ftell.cpp
+++ b/sdk/lib/ucrt/stdio/ftell.cpp
@@ -362,6 +362,7 @@ static Integer __cdecl common_ftell(__crt_stdio_stream const stream,
__crt_cache
{
_unlock_file(stream.public_stream());
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/gets.cpp b/sdk/lib/ucrt/stdio/gets.cpp
index b42ba038803..9a2436092e0 100644
--- a/sdk/lib/ucrt/stdio/gets.cpp
+++ b/sdk/lib/ucrt/stdio/gets.cpp
@@ -111,6 +111,7 @@ static Character* __cdecl common_gets(
{
_unlock_file(stdin);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/getw.cpp b/sdk/lib/ucrt/stdio/getw.cpp
index 9c2a4fcc4d4..9f79e2a705f 100644
--- a/sdk/lib/ucrt/stdio/getw.cpp
+++ b/sdk/lib/ucrt/stdio/getw.cpp
@@ -43,6 +43,7 @@ extern "C" int __cdecl _getw(FILE* const stream)
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/putw.cpp b/sdk/lib/ucrt/stdio/putw.cpp
index 3f264c8d838..301e8e52615 100644
--- a/sdk/lib/ucrt/stdio/putw.cpp
+++ b/sdk/lib/ucrt/stdio/putw.cpp
@@ -38,6 +38,7 @@ extern "C" int __cdecl _putw(int const value, FILE* const
stream)
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/rewind.cpp b/sdk/lib/ucrt/stdio/rewind.cpp
index 11fcb4ba81c..3cb1d26f419 100644
--- a/sdk/lib/ucrt/stdio/rewind.cpp
+++ b/sdk/lib/ucrt/stdio/rewind.cpp
@@ -51,6 +51,7 @@ static void __cdecl _rewind_internal(FILE* const public_stream,
__crt_cached_ptd
{
_unlock_file(stream.public_stream());
}
+ __endtry
}
extern "C" void __cdecl rewind(FILE* const public_stream)
diff --git a/sdk/lib/ucrt/stdio/rmtmp.cpp b/sdk/lib/ucrt/stdio/rmtmp.cpp
index 8a3a2229bbd..0aed77d32ab 100644
--- a/sdk/lib/ucrt/stdio/rmtmp.cpp
+++ b/sdk/lib/ucrt/stdio/rmtmp.cpp
@@ -58,12 +58,14 @@ extern "C" int __cdecl _rmtmp()
{
_unlock_file(stream.public_stream());
}
+ __endtry
}
}
__finally
{
__acrt_unlock(__acrt_stdio_index_lock);
}
+ __endtry
return count;
}
diff --git a/sdk/lib/ucrt/stdio/stream.cpp b/sdk/lib/ucrt/stdio/stream.cpp
index 69ea56a0f8e..713556fc0e8 100644
--- a/sdk/lib/ucrt/stdio/stream.cpp
+++ b/sdk/lib/ucrt/stdio/stream.cpp
@@ -89,6 +89,7 @@ __crt_stdio_stream __cdecl __acrt_stdio_allocate_stream() throw()
{
__acrt_unlock(__acrt_stdio_index_lock);
}
+ __endtry
return stream;
}
diff --git a/sdk/lib/ucrt/stdio/tempnam.cpp b/sdk/lib/ucrt/stdio/tempnam.cpp
index dd213f16b26..f9041d46abb 100644
--- a/sdk/lib/ucrt/stdio/tempnam.cpp
+++ b/sdk/lib/ucrt/stdio/tempnam.cpp
@@ -172,6 +172,7 @@ static bool __cdecl compute_name(
{
__acrt_unlock(__acrt_tempnam_lock);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/tmpfile.cpp b/sdk/lib/ucrt/stdio/tmpfile.cpp
index a58a8e48bfe..d0786c8007a 100644
--- a/sdk/lib/ucrt/stdio/tmpfile.cpp
+++ b/sdk/lib/ucrt/stdio/tmpfile.cpp
@@ -309,6 +309,7 @@ static errno_t common_tmpnam(
{
__acrt_unlock(__acrt_tempnam_lock);
}
+ __endtry
return return_value;
}
@@ -408,6 +409,7 @@ static errno_t __cdecl common_tmpfile_nolock(_Out_ FILE** const
stream, int cons
local_stream.unlock();
}
+ __endtry
return result;
}
@@ -435,6 +437,7 @@ static errno_t __cdecl common_tmpfile(_Out_ FILE** const stream, int
const sh_fl
{
__acrt_unlock(__acrt_tempnam_lock);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/ungetc.cpp b/sdk/lib/ucrt/stdio/ungetc.cpp
index 211216ec119..eabd8908941 100644
--- a/sdk/lib/ucrt/stdio/ungetc.cpp
+++ b/sdk/lib/ucrt/stdio/ungetc.cpp
@@ -28,6 +28,7 @@ extern "C" int __cdecl ungetc(int const c, FILE* const
stream)
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/stdio/ungetwc.cpp b/sdk/lib/ucrt/stdio/ungetwc.cpp
index 831ac543d2c..ceef236d5a7 100644
--- a/sdk/lib/ucrt/stdio/ungetwc.cpp
+++ b/sdk/lib/ucrt/stdio/ungetwc.cpp
@@ -28,6 +28,7 @@ extern "C" wint_t __cdecl ungetwc(wint_t const c, FILE* const
stream)
{
_unlock_file(stream);
}
+ __endtry
return return_value;
}
diff --git a/sdk/lib/ucrt/time/tzset.cpp b/sdk/lib/ucrt/time/tzset.cpp
index bd3e68931dc..2e7ae9254b3 100644
--- a/sdk/lib/ucrt/time/tzset.cpp
+++ b/sdk/lib/ucrt/time/tzset.cpp
@@ -381,6 +381,7 @@ extern "C" void __cdecl _tzset()
{
__acrt_unlock(__acrt_time_lock);
}
+ __endtry
}
@@ -413,6 +414,7 @@ extern "C" void __cdecl __tzset()
{
__acrt_unlock(__acrt_time_lock);
}
+ __endtry
}
@@ -707,6 +709,7 @@ extern "C" int __cdecl _isindst(tm* const tb)
{
__acrt_unlock(__acrt_time_lock);
}
+ __endtry
return retval;
}