diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2012-02-28 18:05:04 -0800 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2012-02-28 18:05:25 -0800 |
| commit | d3331bce98eefd2f9528c70322f059dcc44553c9 (patch) | |
| tree | 153888bd1ceabad4f6ff3894536792f6885e5ec5 /src/rt/rust_shape.cpp | |
| parent | 012dec5e5756bdc01e771f5152d71eafa9c8441e (diff) | |
| download | rust-d3331bce98eefd2f9528c70322f059dcc44553c9.tar.gz rust-d3331bce98eefd2f9528c70322f059dcc44553c9.zip | |
rt: strings should escape chars like '\n' as '\n'
Diffstat (limited to 'src/rt/rust_shape.cpp')
| -rw-r--r-- | src/rt/rust_shape.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/rt/rust_shape.cpp b/src/rt/rust_shape.cpp index 866bc4ac17a..ef53a7ca7fa 100644 --- a/src/rt/rust_shape.cpp +++ b/src/rt/rust_shape.cpp @@ -447,10 +447,19 @@ log::walk_string2(const std::pair<ptr,ptr> &data) { ptr subdp = data.first; while (subdp < data.second) { char ch = *subdp; - if (isprint(ch)) - out << ch; - else if (ch) - out << "\\x" << std::setw(2) << std::setfill('0') << (int)ch; + switch(ch) { + case '\n': out << "\\n"; break; + case '\r': out << "\\r"; break; + case '\t': out << "\\t"; break; + case '\\': out << "\\\\"; break; + case '"': out << "\\\""; break; + default: + if (isprint(ch)) { + out << ch; + } else if (ch) { + out << "\\x" << std::setw(2) << std::setfill('0') << (int)ch; + } + } ++subdp; } |
