diff --git a/adb/Android.mk b/adb/Android.mk index 385b1c5be..67c3eb78c 100644 --- a/adb/Android.mk +++ b/adb/Android.mk @@ -133,8 +133,6 @@ LOCAL_SRC_FILES := \ $(LIBADB_TEST_SRCS) \ $(LIBADB_TEST_linux_SRCS) \ shell_service_protocol.cpp \ - -LOCAL_SRC_FILES_linux := \ shell_service_protocol_test.cpp \ LOCAL_SANITIZE := $(adb_target_sanitize) @@ -155,11 +153,9 @@ LOCAL_SRC_FILES := \ $(LIBADB_TEST_SRCS) \ services.cpp \ shell_service_protocol.cpp \ - -LOCAL_SRC_FILES_linux := \ - $(LIBADB_TEST_linux_SRCS) \ shell_service_protocol_test.cpp \ +LOCAL_SRC_FILES_linux := $(LIBADB_TEST_linux_SRCS) LOCAL_SRC_FILES_darwin := $(LIBADB_TEST_darwin_SRCS) LOCAL_SRC_FILES_windows := $(LIBADB_TEST_windows_SRCS) LOCAL_SANITIZE := $(adb_host_sanitize) diff --git a/adb/shell_service_protocol_test.cpp b/adb/shell_service_protocol_test.cpp index 85b2f917b..a826035ab 100644 --- a/adb/shell_service_protocol_test.cpp +++ b/adb/shell_service_protocol_test.cpp @@ -72,13 +72,17 @@ class ShellProtocolTest : public ::testing::Test { read_protocol_->buffer_end_ = read_protocol_->data() + size; } +#if !defined(_WIN32) static sig_t saved_sigpipe_handler_; +#endif int read_fd_ = -1, write_fd_ = -1; ShellProtocol *read_protocol_ = nullptr, *write_protocol_ = nullptr; }; +#if !defined(_WIN32) sig_t ShellProtocolTest::saved_sigpipe_handler_ = nullptr; +#endif namespace { diff --git a/adb/sysdeps_win32.cpp b/adb/sysdeps_win32.cpp index c5aad0230..5b23c793f 100644 --- a/adb/sysdeps_win32.cpp +++ b/adb/sysdeps_win32.cpp @@ -1121,6 +1121,11 @@ bip_buffer_write( BipBuffer bip, const void* src, int len ) BIPD(( "bip_buffer_write: enter %d->%d len %d", bip->fdin, bip->fdout, len )); BIPDUMP( src, len ); + if (bip->closed) { + errno = EPIPE; + return -1; + } + EnterCriticalSection( &bip->lock ); while (!bip->can_write) {