Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rubygem-addressable for 
openSUSE:Factory checked in at 2023-11-03 22:19:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-addressable (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-addressable.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-addressable"

Fri Nov  3 22:19:20 2023 rev:24 rq:1122805 version:2.8.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-addressable/rubygem-addressable.changes  
2023-06-14 16:29:17.038447786 +0200
+++ 
/work/SRC/openSUSE:Factory/.rubygem-addressable.new.17445/rubygem-addressable.changes
       2023-11-03 22:19:22.334344060 +0100
@@ -1,0 +2,13 @@
+Thu Nov  2 14:29:46 UTC 2023 - Dan Čermák <dan.cer...@posteo.net>
+
+- # Addressable 2.8.5
+- Fix thread safety issue with encoding tables ([#515])
+- Define URI::NONE as a module to avoid serialization issues ([#509])
+- Fix YAML serialization ([#508])
+
+[#508]: https://github.com/sporkmonger/addressable/pull/508
+[#509]: https://github.com/sporkmonger/addressable/pull/509
+[#515]: https://github.com/sporkmonger/addressable/pull/515
+
+
+-------------------------------------------------------------------

Old:
----
  addressable-2.8.4.gem

New:
----
  addressable-2.8.5.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-addressable.spec ++++++
--- /var/tmp/diff_new_pack.XrnOz4/_old  2023-11-03 22:19:23.218376580 +0100
+++ /var/tmp/diff_new_pack.XrnOz4/_new  2023-11-03 22:19:23.218376580 +0100
@@ -24,11 +24,10 @@
 #
 
 Name:           rubygem-addressable
-Version:        2.8.4
+Version:        2.8.5
 Release:        0
 %define mod_name addressable
 %define mod_full_name %{mod_name}-%{version}
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  %{ruby >= 2.2}
 BuildRequires:  %{rubygem gem2rpm}
 BuildRequires:  %{rubygem rdoc > 3.10}
@@ -38,7 +37,6 @@
 Source1:        gem2rpm.yml
 Summary:        URI Implementation
 License:        Apache-2.0
-Group:          Development/Languages/Ruby
 
 %description
 Addressable is an alternative implementation to the URI implementation that is

++++++ addressable-2.8.4.gem -> addressable-2.8.5.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2023-04-09 17:02:36.000000000 +0200
+++ new/CHANGELOG.md    2023-08-03 10:54:34.000000000 +0200
@@ -1,3 +1,12 @@
+# Addressable 2.8.5
+- Fix thread safety issue with encoding tables ([#515])
+- Define URI::NONE as a module to avoid serialization issues ([#509])
+- Fix YAML serialization ([#508])
+
+[#508]: https://github.com/sporkmonger/addressable/pull/508
+[#509]: https://github.com/sporkmonger/addressable/pull/509
+[#515]: https://github.com/sporkmonger/addressable/pull/515
+
 # Addressable 2.8.4
 - Restore `Addressable::IDNA.unicode_normalize_kc` as a deprecated method 
([#504])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2023-04-09 17:02:36.000000000 +0200
+++ new/Rakefile        2023-08-03 10:54:34.000000000 +0200
@@ -20,12 +20,17 @@
 TEXT
 
 PKG_FILES = FileList[
-    "lib/**/*", "spec/**/*", "vendor/**/*", "data/**/*",
-    "tasks/**/*",
-    "[A-Z]*", "Rakefile"
-].exclude(/pkg/).exclude(/database\.yml/).
-  exclude(/Gemfile\.lock/).exclude(/[_\.]git$/).
-  exclude(/coverage/)
+    "data/**/*",
+    "lib/**/*.rb",
+    "spec/**/*.rb",
+    "tasks/**/*.rake",
+    "addressable.gemspec",
+    "CHANGELOG.md",
+    "Gemfile",
+    "LICENSE.txt",
+    "README.md",
+    "Rakefile",
+]
 
 task :default => "spec"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/addressable.gemspec new/addressable.gemspec
--- old/addressable.gemspec     2023-04-09 17:02:36.000000000 +0200
+++ new/addressable.gemspec     2023-08-03 10:54:34.000000000 +0200
@@ -1,15 +1,15 @@
 # -*- encoding: utf-8 -*-
-# stub: addressable 2.8.4 ruby lib
+# stub: addressable 2.8.5 ruby lib
 
 Gem::Specification.new do |s|
   s.name = "addressable".freeze
-  s.version = "2.8.4"
+  s.version = "2.8.5"
 
   s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if 
s.respond_to? :required_rubygems_version=
   s.metadata = { "changelog_uri" => 
"https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md"; } if 
s.respond_to? :metadata=
   s.require_paths = ["lib".freeze]
   s.authors = ["Bob Aman".freeze]
-  s.date = "2023-04-09"
+  s.date = "2023-08-03"
   s.description = "Addressable is an alternative implementation to the URI 
implementation that is\npart of Ruby's standard library. It is flexible, offers 
heuristic parsing, and\nadditionally provides extensive support for IRIs and 
URI templates.\n".freeze
   s.email = "b...@sporkmonger.com".freeze
   s.extra_rdoc_files = ["README.md".freeze]
@@ -18,7 +18,7 @@
   s.licenses = ["Apache-2.0".freeze]
   s.rdoc_options = ["--main".freeze, "README.md".freeze]
   s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
-  s.rubygems_version = "3.4.10".freeze
+  s.rubygems_version = "3.4.18".freeze
   s.summary = "URI Implementation".freeze
 
   s.specification_version = 4
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/addressable/uri.rb new/lib/addressable/uri.rb
--- old/lib/addressable/uri.rb  2023-04-09 17:02:36.000000000 +0200
+++ new/lib/addressable/uri.rb  2023-08-03 10:54:34.000000000 +0200
@@ -344,17 +344,13 @@
     ##
     # Tables used to optimize encoding operations in `self.encode_component`
     # and `self.normalize_component`
-    SEQUENCE_ENCODING_TABLE = Hash.new do |hash, sequence|
-      hash[sequence] = sequence.unpack("C*").map do |c|
-        format("%02x", c)
-      end.join
-    end
-
-    SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE = Hash.new do |hash, sequence|
-      hash[sequence] = sequence.unpack("C*").map do |c|
-        format("%%%02X", c)
-      end.join
-    end
+    SEQUENCE_ENCODING_TABLE = (0..255).map do |byte|
+      format("%02x", byte).freeze
+    end.freeze
+
+    SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE = (0..255).map do |byte|
+      format("%%%02X", byte).freeze
+    end.freeze
 
     ##
     # Percent encodes a URI component.
@@ -421,16 +417,17 @@
       component = component.dup
       component.force_encoding(Encoding::ASCII_8BIT)
       # Avoiding gsub! because there are edge cases with frozen strings
-      component = component.gsub(character_class) do |sequence|
-        SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE[sequence]
+      component = component.gsub(character_class) do |char|
+        SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE[char.ord]
       end
       if upcase_encoded.length > 0
-        upcase_encoded_chars = upcase_encoded.chars.map do |char|
-          SEQUENCE_ENCODING_TABLE[char]
+        upcase_encoded_chars = upcase_encoded.bytes.map do |byte|
+          SEQUENCE_ENCODING_TABLE[byte]
         end
         component = component.gsub(/%(#{upcase_encoded_chars.join('|')})/,
                                    &:upcase)
       end
+
       return component
     end
 
@@ -560,10 +557,9 @@
         leave_re = if leave_encoded.length > 0
           character_class = "#{character_class}%" unless 
character_class.include?('%')
 
-          "|%(?!#{leave_encoded.chars.flat_map do |char|
-            seq = SEQUENCE_ENCODING_TABLE[char]
-            [seq.upcase, seq.downcase]
-          end.join('|')})"
+          bytes = leave_encoded.bytes
+          leave_encoded_pattern = bytes.map { |b| SEQUENCE_ENCODING_TABLE[b] 
}.join('|')
+          "|%(?!#{leave_encoded_pattern}|#{leave_encoded_pattern.upcase})"
         end
 
         character_class = if leave_re
@@ -2396,6 +2392,25 @@
       @validation_deferred = false
     end
 
+    def encode_with(coder)
+      instance_variables.each do |ivar|
+        value = instance_variable_get(ivar)
+        if value != NONE
+          key = ivar.to_s.slice(1..-1)
+          coder[key] = value
+        end
+      end
+      nil
+    end
+
+    def init_with(coder)
+      reset_ivs
+      coder.map.each do |key, value|
+        instance_variable_set("@#{key}", value)
+      end
+      nil
+    end
+
   protected
     SELF_REF = '.'
     PARENT = '..'
@@ -2569,7 +2584,7 @@
       @query = nil
     end
 
-    NONE = Object.new.freeze
+    NONE = Module.new.freeze
 
     private_constant :NONE
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/addressable/version.rb 
new/lib/addressable/version.rb
--- old/lib/addressable/version.rb      2023-04-09 17:02:36.000000000 +0200
+++ new/lib/addressable/version.rb      2023-08-03 10:54:34.000000000 +0200
@@ -23,7 +23,7 @@
     module VERSION
       MAJOR = 2
       MINOR = 8
-      TINY  = 4
+      TINY  = 5
 
       STRING = [MAJOR, MINOR, TINY].join('.')
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2023-04-09 17:02:36.000000000 +0200
+++ new/metadata        2023-08-03 10:54:34.000000000 +0200
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: addressable
 version: !ruby/object:Gem::Version
-  version: 2.8.4
+  version: 2.8.5
 platform: ruby
 authors:
 - Bob Aman
 autorequire:
 bindir: bin
 cert_chain: []
-date: 2023-04-09 00:00:00.000000000 Z
+date: 2023-08-03 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: public_suffix
@@ -109,7 +109,7 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.4.10
+rubygems_version: 3.4.18
 signing_key:
 specification_version: 4
 summary: URI Implementation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/addressable/uri_spec.rb 
new/spec/addressable/uri_spec.rb
--- old/spec/addressable/uri_spec.rb    2023-04-09 17:02:36.000000000 +0200
+++ new/spec/addressable/uri_spec.rb    2023-08-03 10:54:34.000000000 +0200
@@ -20,6 +20,7 @@
 require "addressable/uri"
 require "uri"
 require "ipaddr"
+require "yaml"
 
 if !"".respond_to?("force_encoding")
   class String
@@ -6768,6 +6769,37 @@
   end
 end
 
+describe Addressable::URI, "support serialization roundtrip" do
+  before do
+    @uri = Addressable::URI.new(
+      :scheme => "http",
+      :user => "user",
+      :password => "password",
+      :host => "example.com",
+      :port => 80,
+      :path => "/path",
+      :query => "query=value",
+      :fragment => "fragment"
+    )
+  end
+
+  it "is in a working state after being serialized with Marshal" do
+    @uri = Addressable::URI.parse("http://example.com";)
+    cloned_uri = Marshal.load(Marshal.dump(@uri))
+    expect(cloned_uri.normalized_scheme).to be == @uri.normalized_scheme
+  end
+
+  it "is in a working state after being serialized with YAML" do
+    @uri = Addressable::URI.parse("http://example.com";)
+    cloned_uri = if YAML.respond_to?(:unsafe_load)
+      YAML.unsafe_load(YAML.dump(@uri))
+    else
+      YAML.load(YAML.dump(@uri))
+    end
+    expect(cloned_uri.normalized_scheme).to be == @uri.normalized_scheme
+  end
+end
+
 describe Addressable::URI, "when initialized in a non-main `Ractor`" do
   it "should have the same value as if used in the main `Ractor`" do
     pending("Ruby 3.0+ for `Ractor` support") unless defined?(Ractor)
@@ -6799,3 +6831,10 @@
     expect(res).to be nil
   end
 end
+
+describe Addressable::URI, "YAML safe loading" do
+  it "doesn't serialize anonymous objects" do
+    url = Addressable::URI.parse("http://example.com/";)
+    expect(YAML.dump(url)).to_not include("!ruby/object {}")
+  end
+end

Reply via email to