diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-28 16:59:26 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-28 16:59:26 +0100 |
commit | 49009573bc2eacd823d57433daf1f59dfe415065 (patch) | |
tree | 7a8a15d1bc549e674f40cffdf0613de7af512b93 /src/libmain/shared.cc | |
parent | 24cb65efc3c34e24fc653779a4d42cf4f31c6737 (diff) |
Don't interpret strings as format strings
Ludo reported this error:
unexpected Nix daemon error: boost::too_few_args: format-string refered to more arguments than were passed
coming from this line:
printMsg(lvlError, run.program + ": " + string(err, 0, p));
The problem here is that the string ends up implicitly converted to a
Boost format() object, so % characters are treated specially. I
always assumed (wrongly) that strings are converted to a format object
that outputs the string as-is.
Since this assumption appears in several places that may be hard to
grep for, I've added some C++ type hackery to ensures that the right
thing happens. So you don't have to worry about % in statements like
printMsg(lvlError, "foo: " + s);
or
throw Error("foo: " + s);
Diffstat (limited to 'src/libmain/shared.cc')
0 files changed, 0 insertions, 0 deletions