From ffdede2ac4dd3f4d4cb1e5d30a98194490104b45 Mon Sep 17 00:00:00 2001 From: Xu Cheng Date: Sat, 5 Sep 2015 14:27:36 +0800 Subject: [PATCH] readall: put nostdout in outter layer The previous code would fail to reset stdout after thread jobs are finshed. --- Library/Homebrew/cmd/readall.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/cmd/readall.rb b/Library/Homebrew/cmd/readall.rb index df8644b832..81eaba37d5 100644 --- a/Library/Homebrew/cmd/readall.rb +++ b/Library/Homebrew/cmd/readall.rb @@ -17,17 +17,19 @@ module Homebrew end failed = false - workers = (0...Hardware::CPU.cores).map do - Thread.new do - begin - while rb = ruby_files.pop(true) - nostdout { failed = true unless system RUBY_PATH, "-c", "-w", rb } + nostdout do + workers = (0...Hardware::CPU.cores).map do + Thread.new do + begin + while rb = ruby_files.pop(true) + failed = true unless system RUBY_PATH, "-c", "-w", rb + end + rescue ThreadError # ignore empty queue error end - rescue ThreadError # ignore empty queue error end end + workers.map(&:join) end - workers.map(&:join) Homebrew.failed = failed end