From c4b45f2ad3ebb98f02d6c3ed8e7a4ef449449d0c Mon Sep 17 00:00:00 2001 From: Alex Robuchon Date: Tue, 27 May 2025 08:59:47 +0200 Subject: [PATCH] Fix high memory usage regression due to namespaces This fixes the high memory usage regression that was introduced in 2.6.2 --- lib/creek/sheet.rb | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/creek/sheet.rb b/lib/creek/sheet.rb index 69d8497..45b82bf 100644 --- a/lib/creek/sheet.rb +++ b/lib/creek/sheet.rb @@ -107,18 +107,15 @@ def rows_generator(include_meta_data = false, use_simple_rows_format = false) name_v = 'v' name_t = 't' Nokogiri::XML::Reader.from_io(xml).each do |node| - if prefix.empty? && node.namespaces.any? - namespace = node.namespaces.detect { |_key, uri| uri == SPREADSHEETML_URI } - prefix = if namespace && namespace[0].start_with?('xmlns:') - namespace[0].delete_prefix('xmlns:') + ':' - else - '' - end - name_row = "#{prefix}row" - name_c = "#{prefix}c" - name_v = "#{prefix}v" - name_t = "#{prefix}t" + next unless node.namespace_uri == SPREADSHEETML_URI + if prefix.empty? && node.prefix + prefix = node.prefix + name_row = "#{prefix}:row" + name_c = "#{prefix}:c" + name_v = "#{prefix}:v" + name_t = "#{prefix}:t" end + if node.name == name_row && node.node_type == opener row = node.attributes row['cells'] = {}