diff --git a/src/corelib/tools/quniquehandle_types.cpp b/src/corelib/tools/quniquehandle_types.cpp index 59b9ebe179c..a46006ab6f3 100644 --- a/src/corelib/tools/quniquehandle_types.cpp +++ b/src/corelib/tools/quniquehandle_types.cpp @@ -19,12 +19,12 @@ namespace QtUniqueHandleTraits { #ifdef Q_OS_WIN -bool InvalidHandleTraits::close(Type handle) +bool InvalidHandleTraits::close(Type handle) noexcept { return ::CloseHandle(handle); } -bool NullHandleTraits::close(Type handle) +bool NullHandleTraits::close(Type handle) noexcept { return ::CloseHandle(handle); } @@ -33,11 +33,13 @@ bool NullHandleTraits::close(Type handle) bool FileDescriptorHandleTraits::close(Type handle) { + // not noexcept because close() is a POSIX cancellation point return QT_CLOSE(handle) == 0; } bool FILEHandleTraits::close(Type handle) { + // not noexcept because fclose() is a POSIX cancellation point return ::fclose(handle); } diff --git a/src/corelib/tools/quniquehandle_types_p.h b/src/corelib/tools/quniquehandle_types_p.h index 01bcfd76bba..59dacb1cf09 100644 --- a/src/corelib/tools/quniquehandle_types_p.h +++ b/src/corelib/tools/quniquehandle_types_p.h @@ -33,14 +33,14 @@ struct InvalidHandleTraits { return Qt::HANDLE(-1); // AKA INVALID_HANDLE_VALUE } - Q_CORE_EXPORT static bool close(Type handle); + Q_CORE_EXPORT static bool close(Type handle) noexcept; }; struct NullHandleTraits { using Type = Qt::HANDLE; static Type invalidValue() noexcept { return nullptr; } - Q_CORE_EXPORT static bool close(Type handle); + Q_CORE_EXPORT static bool close(Type handle) noexcept; }; #endif