[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>

Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls

21 messages 2010/01/03

[#27437] [Feature #2561] 1.8.7 Patch reduces time cost of Rational operations by 50%. — Kurt Stephens <redmine@...>

Feature #2561: 1.8.7 Patch reduces time cost of Rational operations by 50%.

9 messages 2010/01/06

[#27447] [Bug #2564] [patch] re-initialize timer_thread_{lock,cond} after fork — Aliaksey Kandratsenka <redmine@...>

Bug #2564: [patch] re-initialize timer_thread_{lock,cond} after fork

18 messages 2010/01/06

[#27545] [Feature #2594] 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap(). — Kurt Stephens <redmine@...>

Feature #2594: 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap().

8 messages 2010/01/11

[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>

Bug #2619: Proposed method: Process.fork_supported?

45 messages 2010/01/20
[#27643] [Feature #2619] Proposed method: Process.fork_supported? — Luis Lavena <redmine@...> 2010/01/21

Issue #2619 has been updated by Luis Lavena.

[#27678] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27684] Re: [Feature #2619] Proposed method: Process.fork_supported? — Charles Oliver Nutter <headius@...> 2010/01/22

On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#27708] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27646] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <redmine@ruby-lang.org>:

[#27652] Re: [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <hongli@...99.net> 2010/01/21

On 1/21/10 5:20 AM, Tanaka Akira wrote:

[#27653] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <hongli@plan99.net>:

[#27662] Re: [Bug #2619] Proposed method: Process.fork_supported? — Vladimir Sizikov <vsizikov@...> 2010/01/21

On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:

[#27698] [Bug #2629] ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time — Hongli Lai <redmine@...>

Bug #2629: ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

8 messages 2010/01/22

[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>

Feature #2635: Unbundle rdoc

14 messages 2010/01/23

[#27757] [Bug #2638] ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located. — Joel Soete <redmine@...>

Bug #2638: ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located.

10 messages 2010/01/24

[#27778] [Bug #2641] Seg fault running miniruby during ruby build on Haiku — Alexander von Gluck <redmine@...>

Bug #2641: Seg fault running miniruby during ruby build on Haiku

10 messages 2010/01/25

[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>

Bug #2644: memory over-allocation with regexp

12 messages 2010/01/25

[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>

Bug #2647: Lack of testing for String#split

14 messages 2010/01/25

[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>

Bug #2669: mkmf find_executable doesn't find .bat files

11 messages 2010/01/27

[#27930] [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — Yusuke ENDOH <mame@...>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

15 messages 2010/01/28
[#27931] Re: [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — James Edward Gray II <james@...> 2010/01/28

On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:

[ruby-core:27979] [Bug:trunk] [#19058] [PATCH] Fix duplicate XMLDecls and bad DocTypes in REXML::Document

From: Yusuke ENDOH <mame@...>
Date: 2010-01-31 03:49:09 UTC
List: ruby-core #27979
Hi,

This is a copy of ticket in the rubyforge tracker.  Federico Builes is
the original reporter and the author of the attached patch.

http://rubyforge.org/tracker/index.php?func=detail&aid=19058&group_id=426&atid=1698

The issue seems not to be solved and causes rubyspec error.

I will apply the patch soon because there is no maintainer of REXML now.
This ticket is for the record.  You can tell me if you have any objection
about this.

-- 

I think the following behaviors of REXML can be considered as bugs:

1) XML Documents accept more than 1 XMLDecl (which is not allowed by
http://www.w3.org/TR/xml/#NT-prolog)

irb(main):001:0> require 'rexml/document'
irb(main):002:0> d = REXML::Document.new("<foo />")
irb(main):004:0> d.add REXML::XMLDecl.new
irb(main):005:0> d.add REXML::XMLDecl.new
=> [<?xml ... ?>, <?xml ... ?>, <foo/>]
irb(main):006:0> d.write
<?xml version='1.0'?><?xml version='1.0'?><foo/>

This behavior can be seen with "Document#to_s" and "Document#children"
too. It goes back to:

ruby_1_9/lib/rexml/document.rb:70
 if child.kind_of? XMLDecl
       @children.unshift child
       child.parent = self
 elsif...

Since it's not verifying if a XMLDecl already exists for the document.
According to Ruby-Core, this is not a validation
issue but a malformedness(?) so it should be fixed.

2) DocTypes are being added to the end of the document.

This bug has been reported in
http://www.germane-software.com/projects/rexml/ticket/120 for at least 4
months.
To add a bit more, I _think_ this condition will fail (kind_of without "?"
unless it's defined like that somewhere else) but it'll never be met:

ruby_1_9/lib/rexml/document.rb:80
 if @children[ insert_before_index ] # Not null = not end of list
   if @children[ insert_before_index ].kind_of DocType

Since insert_before_index will be the expected position + 1.

This patch fixes both of these problems.

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

Attachments (1)

fix_rexml_decl_and_doctypes.patch (1.75 KB, text/x-diff)
Index: lib/rexml/document.rb
===================================================================
--- lib/rexml/document.rb	(revision 15829)
+++ lib/rexml/document.rb	(working copy)
@@ -65,24 +65,28 @@
 		# of the document
 		def add( child )
 			if child.kind_of? XMLDecl
-				@children.unshift child
-        child.parent = self
+        if @children[0].kind_of? XMLDecl # already has a declaration,
+           @children[0] = child  		    # replace it
+           child.parent = self
+        else
+           @children.unshift child
+		  end
 			elsif child.kind_of? DocType
         # Find first Element or DocType node and insert the decl right 
         # before it.  If there is no such node, just insert the child at the
         # end.  If there is a child and it is an DocType, then replace it.
         insert_before_index = 0
-        @children.find { |x| 
+        @children.find do |node| 
+          node.kind_of?(DocType) || node.kind_of?(Element)
           insert_before_index += 1
-          x.kind_of?(Element) || x.kind_of?(DocType)
-        }
-        if @children[ insert_before_index ] # Not null = not end of list
-          if @children[ insert_before_index ].kind_of DocType
-            @children[ insert_before_index ] = child
-          else
-            @children[ index_before_index-1, 0 ] = child
-          end
-        else  # Insert at end of list
+	     end
+        if @children[ insert_before_index ] # exists
+	      if @children[ insert_before_index ].kind_of? DocType
+           @children[ insert_before_index ] = child # replace doctype
+         else
+           @children[ insert_before_index, 0 ] = child
+         end
+        else	# Insert at end of list
           @children[insert_before_index] = child
         end
 				child.parent = self

In This Thread

Prev Next