Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 3 additions & 14 deletions stl/inc/condition_variable
Original file line number Diff line number Diff line change
Expand Up @@ -224,16 +224,8 @@ public:
// but unfortunately our ABI speaks struct xtime, which is relative to the system clock.
_CSTD xtime _Tgt;
(void) _To_xtime_10_day_clamped(_Tgt, _Rel_time);
const int _Res = _Cnd_timedwait(_Mycnd(), _Myptr->_Mymtx(), &_Tgt);
(void) _Cnd_timedwait(_Mycnd(), _Myptr->_Mymtx(), &_Tgt);
_Guard_unlocks_before_locking_outer.unlock();

switch (_Res) {
case _Thrd_timedout:
case _Thrd_success:
break;
default:
_Throw_C_error(_Res);
}
} // relock

return _Pred();
Expand Down Expand Up @@ -262,13 +254,10 @@ private:
const int _Res = _Cnd_timedwait(_Mycnd(), _Ptr->_Mymtx(), _Abs_time);
_Guard.unlock();

switch (_Res) {
case _Thrd_success:
if (_Res == _Thrd_success) {
return cv_status::no_timeout;
case _Thrd_timedout:
} else {
return cv_status::timeout;
default:
_Throw_C_error(_Res);
}
}
};
Expand Down
8 changes: 3 additions & 5 deletions stl/inc/mutex
Original file line number Diff line number Diff line change
Expand Up @@ -746,13 +746,11 @@ public:

// Nothing to do to comply with LWG-2135 because std::mutex lock/unlock are nothrow
const int _Res = _Cnd_timedwait(_Mycnd(), _Lck.mutex()->_Mymtx(), _Abs_time);
switch (_Res) {
case _Thrd_success:

if (_Res == _Thrd_success) {
return cv_status::no_timeout;
case _Thrd_timedout:
} else {
return cv_status::timeout;
default:
_Throw_C_error(_Res);
}
}

Expand Down
5 changes: 4 additions & 1 deletion stl/inc/thread
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,10 @@ public:
_Throw_Cpp_error(_INVALID_ARGUMENT);
}

_Check_C_return(_Thrd_detach(_Thr));
if (_Thrd_detach(_Thr) != _Thrd_success) {
_Throw_Cpp_error(_INVALID_ARGUMENT);
}

_Thr = {};
}

Expand Down
9 changes: 0 additions & 9 deletions stl/inc/xthreads.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,16 +129,7 @@ enum { // constants for error codes
_RESOURCE_UNAVAILABLE_TRY_AGAIN
};

extern "C++" [[noreturn]] _CRTIMP2_PURE void __cdecl _Throw_C_error(int _Code);
extern "C++" [[noreturn]] _CRTIMP2_PURE void __cdecl _Throw_Cpp_error(int _Code);

inline int _Check_C_return(int _Res) { // throw exception on failure
if (_Res != _Thrd_success) {
_Throw_C_error(_Res);
}

return _Res;
}
_STD_END
#pragma pop_macro("new")
_STL_RESTORE_CLANG_WARNINGS
Expand Down
1 change: 0 additions & 1 deletion stl/inc/xtimec.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ struct xtime { // store time with nanosecond resolution

_CRTIMP2_PURE int __cdecl xtime_get(xtime*, int);

_CRTIMP2_PURE long __cdecl _Xtime_diff_to_millis(const xtime*);
_CRTIMP2_PURE long __cdecl _Xtime_diff_to_millis2(const xtime*, const xtime*);
_CRTIMP2_PURE long long __cdecl _Xtime_get_ticks();

Expand Down
1 change: 1 addition & 0 deletions stl/src/thread0.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ static constexpr errc codes[] = {
_THROW(system_error(static_cast<int>(codes[code]), _STD generic_category(), msgs[code]));
}

// TRANSITION, ABI: preserved for binary compatibility
[[noreturn]] _CRTIMP2_PURE void __cdecl _Throw_C_error(int code) { // throw error object for C error
switch (code) { // select the exception
case _Thrd_nomem:
Expand Down
1 change: 1 addition & 0 deletions stl/src/xtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ _CRTIMP2_PURE long __cdecl _Xtime_diff_to_millis2(const xtime* xt1, const xtime*
return static_cast<long>(diff.sec * _Msec_per_sec + (diff.nsec + _Nsec_per_msec - 1) / _Nsec_per_msec);
}

// TRANSITION, ABI: preserved for binary compatibility
_CRTIMP2_PURE long __cdecl _Xtime_diff_to_millis(const xtime* xt) { // convert time to milliseconds
xtime now;
xtime_get(&now, TIME_UTC);
Expand Down