Skip to content

Commit

Permalink
Fix a case where ripple::Expected returned a json array, not a value
Browse files Browse the repository at this point in the history
  • Loading branch information
scottschurr committed Jan 26, 2023
1 parent 0ce15e0 commit 49cdad1
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/ripple/basics/Expected.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,14 @@ class [[nodiscard]] Expected
public:
template <typename U>
requires std::convertible_to<U, T> constexpr Expected(U && r)
: Base(T{std::forward<U>(r)})
: Base(T(std::forward<U>(r)))
{
}

template <typename U>
requires std::convertible_to<U, E> &&
(!std::is_reference_v<U>)constexpr Expected(Unexpected<U> e)
: Base(E{std::move(e.value())})
: Base(E(std::move(e.value())))
{
}

Expand Down Expand Up @@ -220,7 +220,7 @@ class [[nodiscard]] Expected<void, E>
template <typename U>
requires std::convertible_to<U, E> &&
(!std::is_reference_v<U>)constexpr Expected(Unexpected<U> e)
: Base(E{std::move(e.value())})
: Base(E(std::move(e.value())))
{
}

Expand Down
13 changes: 13 additions & 0 deletions src/test/basics/Expected_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
#include <ripple/basics/Expected.h>
#include <ripple/beast/unit_test.h>
#include <ripple/protocol/TER.h>
#if BOOST_VERSION >= 107500
#include <boost/json.hpp> // Not part of boost before version 1.75
#endif // BOOST_VERSION
#include <array>
#include <cstdint>

Expand Down Expand Up @@ -203,6 +206,16 @@ struct Expected_test : beast::unit_test::suite
std::string const s(std::move(expected.error()));
BEAST_EXPECT(s == "Not what is expected!");
}
// Test a case that previously unintentionally returned an array.
#if BOOST_VERSION >= 107500
{
auto expected = []() -> Expected<boost::json::value, std::string> {
return boost::json::object{{"oops", "me array now"}};
}();
BEAST_EXPECT(expected);
BEAST_EXPECT(!expected.value().is_array());
}
#endif // BOOST_VERSION
}
};

Expand Down

0 comments on commit 49cdad1

Please sign in to comment.