https://git.reactos.org/?p=reactos.git;a=commitdiff;h=96676ca251e053e43742c…
commit 96676ca251e053e43742c2eda7de12f9e751ff8b
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Fri Nov 29 09:59:48 2024 +0200
Commit: Timo Kreuzer <timo.kreuzer(a)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