From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 55BA82070D for ; Sat, 31 Dec 2016 04:39:49 +0000 (UTC) From: Eric Wong To: yahns-public@yhbt.net Subject: [PATCH] tee_input: simplify conditional for writing to temporary file Date: Sat, 31 Dec 2016 04:39:49 +0000 Message-Id: <20161231043949.7301-1-e@80x24.org> List-Id: 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. --- lib/yahns/tee_input.rb | 4 +--- 1 file changed, 1 insertion(+), 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 @@ def consume! end def tee(buffer) - if buffer && buffer.size > 0 - @tmp.write(buffer) - end + @tmp.write(buffer) if buffer buffer end -- EW