https://git.reactos.org/?p=reactos.git;a=commitdiff;h=96676ca251e053e43742c2...
commit 96676ca251e053e43742c2eda7de12f9e751ff8b Author: Timo Kreuzer timo.kreuzer@reactos.org AuthorDate: Fri Nov 29 09:59:48 2024 +0200 Commit: Timo Kreuzer timo.kreuzer@reactos.org CommitDate: Tue Jan 14 13:34:24 2025 +0200
[PSEH] Use native SEH on clang-cl x64 --- drivers/filesystems/fastfat/create.c | 19 ++++++++++--------- sdk/lib/pseh/include/pseh/pseh2.h | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/filesystems/fastfat/create.c b/drivers/filesystems/fastfat/create.c index fa9b651e364..cf2cf85e4c5 100644 --- a/drivers/filesystems/fastfat/create.c +++ b/drivers/filesystems/fastfat/create.c @@ -2356,7 +2356,7 @@ Return Value: if ((CreateDisposition != FILE_OPEN) && (CreateDisposition != FILE_OPEN_IF)) {
- try_return( Iosb.Status = STATUS_ACCESS_DENIED ); + try_return( Status = STATUS_ACCESS_DENIED ); }
// @@ -2389,7 +2389,7 @@ Return Value: if (!FlagOn(ShareAccess, FILE_SHARE_READ) && !FatIsHandleCountZero( IrpContext, Vcb )) {
- try_return( Iosb.Status = STATUS_SHARING_VIOLATION ); + try_return( Status = STATUS_SHARING_VIOLATION ); }
// @@ -2412,14 +2412,14 @@ Return Value:
if (Vcb->OpenFileCount != 0) {
- try_return( Iosb.Status = STATUS_SHARING_VIOLATION ); + try_return( Status = STATUS_SHARING_VIOLATION ); }
} else {
if (Vcb->ReadOnlyCount != Vcb->OpenFileCount) {
- try_return( Iosb.Status = STATUS_SHARING_VIOLATION ); + try_return( Status = STATUS_SHARING_VIOLATION ); } }
@@ -2487,13 +2487,13 @@ Return Value:
if (Vcb->DirectAccessOpenCount > 0) {
- if (!NT_SUCCESS(Iosb.Status = IoCheckShareAccess( *DesiredAccess, + if (!NT_SUCCESS(Status = IoCheckShareAccess( *DesiredAccess, ShareAccess, FileObject, &Vcb->ShareAccess, TRUE ))) {
- try_return( Iosb.Status ); + try_return( NOTHING ); }
} else { @@ -2546,7 +2546,7 @@ Return Value: // And set our status to success //
- Iosb.Status = STATUS_SUCCESS; + Status = STATUS_SUCCESS; Iosb.Information = FILE_OPENED;
try_exit: NOTHING; @@ -2558,7 +2558,7 @@ Return Value: // If this is an abnormal termination then undo our work //
- if (_SEH2_AbnormalTermination() || !NT_SUCCESS(Iosb.Status)) { + if (_SEH2_AbnormalTermination() || !NT_SUCCESS(Status)) {
if (UnwindCounts) { Vcb->DirectAccessOpenCount -= 1; @@ -2570,9 +2570,10 @@ Return Value: if (UnwindVolumeLock) { Vcb->VcbState &= ~VCB_STATE_FLAG_LOCKED; } }
- DebugTrace(-1, Dbg, "FatOpenVolume -> Iosb.Status = %08lx\n", Iosb.Status); + DebugTrace(-1, Dbg, "FatOpenVolume -> Iosb.Status = %08lx\n", Status); } _SEH2_END;
+ Iosb.Status = Status; return Iosb; }
diff --git a/sdk/lib/pseh/include/pseh/pseh2.h b/sdk/lib/pseh/include/pseh/pseh2.h index a6d0ab5a3a2..a3aed7aed2b 100644 --- a/sdk/lib/pseh/include/pseh/pseh2.h +++ b/sdk/lib/pseh/include/pseh/pseh2.h @@ -25,7 +25,7 @@
#define __USE_PSEH2__
-#if defined(_USE_NATIVE_SEH) || (defined(_MSC_VER) && !(defined(__clang__) && defined(_M_AMD64))) +#if defined(_USE_NATIVE_SEH) || defined(_MSC_VER)
#define _SEH2_TRY __try #define _SEH2_FINALLY __finally