diff options
author | Eric Wong <e@80x24.org> | 2016-12-31 04:23:07 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-12-31 04:23:07 +0000 |
commit | 470cceaff7cead94d60abd1dac3bee9c9a3c211b (patch) | |
tree | dcb98f70d439217a01fbc8c0f95a03cddbd83a5d | |
parent | 1b826691f0d95b4bde046f3a873bb54449cdb558 (diff) | |
download | yahns-470cceaff7cead94d60abd1dac3bee9c9a3c211b.tar.gz |
It's rare to have an empty string returned by `read` since it requires a length argument of zero (careless) or nil (danger! OOM!). Lets not try to optimize away a method dispatch in this case by checking .size (optimized instruction in YARV). Ruby IO#write already treats writing an empty string as a noop, so no syscall is saved. n.b. `gets` can return an empty string, too, but that's also dangerous w.r.t. memory usage on untrusted input.
-rw-r--r-- | lib/yahns/tee_input.rb | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/yahns/tee_input.rb b/lib/yahns/tee_input.rb index 93ec148..90c8fd6 100644 --- a/lib/yahns/tee_input.rb +++ b/lib/yahns/tee_input.rb @@ -104,9 +104,7 @@ class Yahns::TeeInput < Yahns::StreamInput # :nodoc: end def tee(buffer) - if buffer && buffer.size > 0 - @tmp.write(buffer) - end + @tmp.write(buffer) if buffer buffer end |