From d6507e52adcf851d8888b93f9905f0fad1052af2 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Sun, 16 Feb 2020 02:37:42 +0800 Subject: [PATCH] Fix crashing of tests when '-Wp,-D_GLIBCXX_ASSERTIONS' is given If 'vec' is a vector, calling 'vec[0]' will crash the program if 'vec' is empty and '-Wp,-D_GLIBCXX_ASSERTIONS' given in CXXFLAGS. Fixes https://github.com/gearman/gearmand/issues/272 --- libtest/cmdline.h | 4 ++-- tests/hostile.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libtest/cmdline.h b/libtest/cmdline.h index 692363f6..3503bada 100644 --- a/libtest/cmdline.h +++ b/libtest/cmdline.h @@ -153,7 +153,7 @@ class Application { const char* stdout_c_str() const { - return &_stdout_buffer[0]; + return _stdout_buffer.size() ? &_stdout_buffer[0] : NULL; } libtest::vchar_t stderr_result() const @@ -163,7 +163,7 @@ class Application { const char* stderr_c_str() const { - return &_stderr_buffer[0]; + return _stderr_buffer.size() ? &_stderr_buffer[0] : NULL; } size_t stderr_result_length() const diff --git a/tests/hostile.cc b/tests/hostile.cc index c4c0487d..c7686206 100644 --- a/tests/hostile.cc +++ b/tests/hostile.cc @@ -136,7 +136,7 @@ extern "C" { gearman_return_t rc; void *value= gearman_client_do(&client, WORKER_FUNCTION_NAME, NULL, - &payload[0], + payload.size() ? &payload[0] : NULL, payload.size() ? random() % payload.size() : 0, NULL, &rc);