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;