Reid Morrison created JRUBY-6517:
------------------------------------

             Summary: StringIO#ungetc issue on JRuby 1.6.6 and 1.6.7 in 1.8.7 
mode
                 Key: JRUBY-6517
                 URL: https://jira.codehaus.org/browse/JRUBY-6517
             Project: JRuby
          Issue Type: Bug
          Components: Core Classes/Modules
    Affects Versions: JRuby 1.6.6, JRuby 1.6.7
         Environment: Mac OSX 10.7.3
            Reporter: Reid Morrison
             Fix For: JRuby 1.6.8


The following code works and returns the root node on any version of JRuby 
prior to 1.6.6:
{quote}
require 'stringio'
require 'rexml/document'
str = "<?xml version=\"1.0\"?>\n<xdoc>\n\t<errorcode>0</errorcode>\n</xdoc>"
data = StringIO.new(str)

char = data.getc
data.ungetc(char)

REXML::Document.new(data).root
{quote}

As of JRuby 1.6.6 the last line above returns nil. 

Below is the output from JRuby 1.6.5:

{quote}
jruby -v -S irb
jruby 1.6.5.1 (ruby-1.8.7-p330) (2011-12-27 1bf37c2) (Java HotSpot(TM) 64-Bit 
Server VM 1.6.0_29) [darwin-x86_64-java]
>> require 'stringio'
=> true
>> require 'rexml/document'
=> true
>> str = "<?xml version=\"1.0\"?>\n<xdoc>\n\t<errorcode>0</errorcode>\n</xdoc>"
=> "<?xml version="1.0"?>\n<xdoc>\n\t<errorcode>0</errorcode>\n</xdoc>"
>> data = StringIO.new(str)
=> #<StringIO:0x28c13406>
>> 
?> char = data.getc
=> 60
>> data.ungetc(char)
=> nil
>> 
?> REXML::Document.new(data).root
=> *xdoc* .... 
{quote}

On JRuby 1.6.6 (similarly for JRuby 1.6.7) :
{quote}
jruby -v -S irb
jruby 1.6.6 (ruby-1.8.7-p357) (2012-01-30 5673572) (Java HotSpot(TM) 64-Bit 
Server VM 1.6.0_29) [darwin-x86_64-java]
>> require 'stringio'
=> true
>> require 'rexml/document'
=> true
>> str = "<?xml version=\"1.0\"?>\n<xdoc>\n\t<errorcode>0</errorcode>\n</xdoc>"
=> "<?xml version="1.0"?>\n<xdoc>\n\t<errorcode>0</errorcode>\n</xdoc>"
>> data = StringIO.new(str)
=> #<StringIO:0x539ff66f>
>> 
?> char = data.getc
=> 60
>> data.ungetc(char)
=> nil
>> 
?> REXML::Document.new(data).root
=> *nil*
{quote}

Java version output:
{quote}
java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11D50)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
{quote}

The above code is a subset of the code in Rails 3.0.10 to reproduce the issue 
in a standalone environment. It is occurring under ActiveSupport::XmlMini.parse 
which is using REXML by default

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to