From 9718e6b11a7dd8e41ebc47209b209be353a71db5 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Fri, 7 Aug 2020 19:44:02 -0700 Subject: [PATCH 1/2] Fix build for unsigned-char --- .circleci/config.yml | 14 ++++++++++++++ ci/do_ci.sh | 4 ++++ src/common/utility.cpp | 6 ++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4f720752..e14affc2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,6 +44,19 @@ jobs: - run: ./ci/install_bazel.sh - run: ./ci/do_ci.sh bazel.test + # Verify that we can work on architectures that default to use an unsgiend char + # See https://github.com/lightstep/lightstep-tracer-cpp/issues/246 + # https://github.com/lightstep/lightstep-tracer-cpp/pull/245 + unsigned_char_test: + resource_class: xlarge + docker: + - image: ubuntu:18.04 + steps: + - checkout + - run: ./ci/setup_build_environment.sh + - run: ./ci/install_bazel.sh + - run: ./ci/do_ci.sh bazel.unsigned_char.test + asan: resource_class: xlarge docker: @@ -294,6 +307,7 @@ workflows: - cmake_no_grpc - cmake_with_grpc - test + - unsigned_char_test - asan - tsan - windows diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 89a6ff59..83827ec4 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -79,6 +79,10 @@ elif [[ "$1" == "bazel.test" ]]; then bazel build -c dbg $BAZEL_OPTIONS -- //... -//benchmark/... bazel test -c dbg $BAZEL_TEST_OPTIONS //... exit 0 +elif [[ "$1" == "bazel.unsigned_char.test" ]]; then + bazel build -c dbg --copt -funsigned-char $BAZEL_OPTIONS -- //... -//benchmark/... + bazel test -c dbg --copt -funsigned-char $BAZEL_TEST_OPTIONS //... + exit 0 elif [[ "$1" == "bazel.asan" ]]; then setup_clang_toolchain bazel test -c dbg \ diff --git a/src/common/utility.cpp b/src/common/utility.cpp index 3c97a1da..dda85bca 100644 --- a/src/common/utility.cpp +++ b/src/common/utility.cpp @@ -51,7 +51,8 @@ timeval ToTimeval(std::chrono::microseconds microseconds) { static void WriteEscapedString(std::ostringstream& writer, opentracing::string_view s) { writer << '"'; - for (char c : s) { + for (auto c_prime : s) { + auto c = static_cast(c_prime); switch (c) { case '"': writer << R"(\")"; @@ -72,7 +73,8 @@ static void WriteEscapedString(std::ostringstream& writer, writer << R"(\t)"; break; default: - if ('\x00' <= c && c <= '\x1f') { + if (static_cast('\x00') <= c && + c <= static_cast('\x1f')) { writer << R"(\u)"; writer << std::hex << std::setw(4) << std::setfill('0') << static_cast(c); From 4bbd9fd54a578e650c7d43d2dc30f9faad1ef50f Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Tue, 11 Aug 2020 17:21:19 -0700 Subject: [PATCH 2/2] Fix typo --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e14affc2..a9a16245 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,7 +44,7 @@ jobs: - run: ./ci/install_bazel.sh - run: ./ci/do_ci.sh bazel.test - # Verify that we can work on architectures that default to use an unsgiend char + # Verify that we can work on architectures that default to use an unsigned char # See https://github.com/lightstep/lightstep-tracer-cpp/issues/246 # https://github.com/lightstep/lightstep-tracer-cpp/pull/245 unsigned_char_test: