Skip to content

Commit a845116

Browse files
Fix DefaultCastRegisterer<std::string>::cast
- when signal value contained a space, only the part before the space was stored in the signal. - add a test on this case.
1 parent 55bb546 commit a845116

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/signal/signal-cast-helper.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ template <>
7979
inline boost::any DefaultCastRegisterer<std::string>::cast
8080
(std::istringstream &iss)
8181
{
82-
std::string inst ("");
83-
iss >> inst;
82+
std::string inst (iss.str ());
8483
return inst;
8584
}
8685

tests/signal-ptr.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,21 @@ BOOST_AUTO_TEST_CASE (plug_signal_string)
9292
Signal<std::string, int> outSig("output");
9393
SignalPtr<std::string, int> inSig (NULL, "input");
9494

95-
std::string str ("value");
95+
std::string str ("two words");
9696
outSig.setConstant(str);
9797
inSig.plug (&outSig);
9898
inSig.recompute(1);
99-
std::ostringstream os;
100-
inSig.get (os);
101-
std::string res (os.str ());
99+
std::ostringstream os1;
100+
inSig.get (os1);
101+
std::string res (os1.str ());
102+
BOOST_CHECK (res == str);
103+
104+
Signal<std::string, int> s ("signal");
105+
std::ostringstream os2;
106+
s.setConstant (str);
107+
os2.clear ();
108+
s.get (os2);
109+
res = os2.str ();
110+
std::cout << "res=" << res << std::endl;
102111
BOOST_CHECK (res == str);
103112
}

0 commit comments

Comments
 (0)