From: Samuel Williams Date: 2012-06-12T01:28:55+09:00 Subject: Is resolv.rb broken in 1.9.3 due to encodings? --90e6ba5bbba17e015304c234d831 Content-Type: text/plain; charset=ISO-8859-1 Hi, I'm trying to work through some issues using 1.9.3 for my project RubyDNS, and I noticed the following code in resolv.rb's MessageEncoder: class MessageEncoder # :nodoc: def initialize @data = '' @names = {} yield self end def to_s return @data end def put_bytes(d) @data << d end def put_pack(template, *d) @data << d.pack(template) end def put_length16 length_index = *@data.length* @data << "\0\0" data_start = *@data.length* yield data_end = *@data.length* * @data[length_index, 2] = [data_end - data_start].pack("n")* end I'm just wondering, shouldn't this be using byteslice, bytesize and friends? Isn't this code completely broken by default since we use UTF-8 encoding? Am I missing something? Kind regards, Samuel --90e6ba5bbba17e015304c234d831 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

I'm trying to work through some issues using 1.9= .3 for my project RubyDNS, and I noticed the following code in resolv.rb= 9;s MessageEncoder:

=A0 =A0 =A0 class Message= Encoder # :nodoc:
=A0 =A0 =A0 =A0 def initialize
=A0 =A0 =A0 =A0 =A0 @data =3D= ''
=A0 =A0 =A0 =A0 =A0 @names =3D {}
=A0 =A0 = =A0 =A0 =A0 yield self
=A0 =A0 =A0 =A0 end

=A0 =A0 =A0 =A0 def to_s
=A0 =A0 =A0 =A0 =A0 return @data
=A0 =A0 =A0 =A0 end

=A0 =A0 =A0 =A0 def put_b= ytes(d)
=A0 =A0 =A0 =A0 =A0 @data << d
=A0 =A0 = =A0 =A0 end

=A0 =A0 =A0 =A0 def put_pack(template,= *d)
=A0 =A0 =A0 =A0 =A0 @data << d.pack(template)
=A0 =A0 =A0 =A0 end

=A0 =A0 =A0 =A0 def put_l= ength16
=A0 =A0 =A0 =A0 =A0 length_index =3D @data.length<= /div>
=A0 =A0 =A0 =A0 =A0 @data << "\0\0"
=A0= =A0 =A0 =A0 =A0 data_start =3D @data.length
=A0 =A0 =A0 =A0 =A0 yield
=A0 =A0 =A0 =A0 =A0 data_end =3D <= b>@data.length
=A0 =A0 =A0 =A0 =A0 @data[length_index, 2] = =3D [data_end - data_start].pack("n")
=A0 =A0 =A0 = =A0 end

I'm just wondering, shouldn't this be using byteslice, bytesize and= friends? Isn't this code completely broken by default since we use UTF= -8 encoding? Am I missing something?

Kind regards,=
Samuel
--90e6ba5bbba17e015304c234d831--