ext/oxt/system_calls.hpp in passenger-4.0.27 vs ext/oxt/system_calls.hpp in passenger-4.0.28
- old
+ new
@@ -186,11 +186,11 @@
/**
* @intern
*/
#ifdef OXT_THREAD_LOCAL_KEYWORD_SUPPORTED
- extern __thread bool _syscalls_interruptable;
+ extern __thread int _syscalls_interruptable;
#else
extern thread_specific_ptr<bool> _syscalls_interruptable;
#endif
/**
@@ -209,12 +209,12 @@
private:
bool last_value;
public:
enable_syscall_interruption() {
#ifdef OXT_THREAD_LOCAL_KEYWORD_SUPPORTED
- last_value = _syscalls_interruptable;
- _syscalls_interruptable = true;
+ last_value = !!_syscalls_interruptable;
+ _syscalls_interruptable = 1;
#else
if (_syscalls_interruptable.get() == NULL) {
last_value = true;
_syscalls_interruptable.reset(new bool(true));
} else {
@@ -244,12 +244,12 @@
friend class restore_syscall_interruption;
bool last_value;
public:
disable_syscall_interruption() {
#ifdef OXT_THREAD_LOCAL_KEYWORD_SUPPORTED
- last_value = _syscalls_interruptable;
- _syscalls_interruptable = false;
+ last_value = !!_syscalls_interruptable;
+ _syscalls_interruptable = 0;
#else
if (_syscalls_interruptable.get() == NULL) {
last_value = true;
_syscalls_interruptable.reset(new bool(false));
} else {
@@ -272,14 +272,14 @@
* Creating an object of this class on the stack will restore the
* system call interruption state to what it was before.
*/
class restore_syscall_interruption {
private:
- int last_value;
+ bool last_value;
public:
restore_syscall_interruption(const disable_syscall_interruption &intr) {
#ifdef OXT_THREAD_LOCAL_KEYWORD_SUPPORTED
- last_value = _syscalls_interruptable;
+ last_value = !!_syscalls_interruptable;
_syscalls_interruptable = intr.last_value;
#else
assert(_syscalls_interruptable.get() != NULL);
last_value = *_syscalls_interruptable;
*_syscalls_interruptable = intr.last_value;