From 2d6b6e024b1093f19b7ea9da2b5f33eb2d32df9e Mon Sep 17 00:00:00 2001 From: Robert Haines Date: Thu, 31 Oct 2019 18:12:18 +0000 Subject: [PATCH] Ensure File#get/find_entry work consistently. I have switched around the logic somewhat so that `get_entry` calls `find_entry` and raises an exception if it gets `nil` back. --- lib/zip/file.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/zip/file.rb b/lib/zip/file.rb index df0594c..e0c6244 100644 --- a/lib/zip/file.rb +++ b/lib/zip/file.rb @@ -376,7 +376,13 @@ module Zip # Searches for entry with the specified name. Returns nil if # no entry is found. See also get_entry def find_entry(entry_name) - @entry_set.find_entry(entry_name) + selected_entry = @entry_set.find_entry(entry_name) + return if selected_entry.nil? + + selected_entry.restore_ownership = @restore_ownership + selected_entry.restore_permissions = @restore_permissions + selected_entry.restore_times = @restore_times + selected_entry end # Searches for entries given a glob @@ -388,10 +394,8 @@ module Zip # if no entry is found. def get_entry(entry) selected_entry = find_entry(entry) - raise Errno::ENOENT, entry unless selected_entry - selected_entry.restore_ownership = @restore_ownership - selected_entry.restore_permissions = @restore_permissions - selected_entry.restore_times = @restore_times + raise Errno::ENOENT, entry if selected_entry.nil? + selected_entry end