lib/ztk/parallel.rb in ztk-3.3.1 vs lib/ztk/parallel.rb in ztk-3.3.2
- old
+ new
@@ -209,10 +209,15 @@
return nil if @forks.count <= 0
pid, status = (Process.wait2(-1, Process::WUNTRACED) rescue nil)
if !pid.nil? && !status.nil? && !(fork = @forks.select{ |f| f[:pid] == pid }.first).nil?
- data = Marshal.load(Zlib::Inflate.inflate(Base64.decode64(fork[:reader].read).to_s))
+ data = nil
+ begin
+ data = Marshal.load(Zlib::Inflate.inflate(Base64.decode64(fork[:reader].read).to_s))
+ rescue Zlib::BufError
+ config.ui.logger.fatal { "Encountered Zlib::BufError when reading child pipe." }
+ end
config.ui.logger.debug { "read(#{data.inspect})" }
data = process_data(data)
!data.nil? and @results.push(data)