[#44036] [ruby-trunk - Feature #6242][Open] Ruby should support lists — "shugo (Shugo Maeda)" <redmine@...>

20 messages 2012/04/01

[#44084] [ruby-trunk - Bug #6246][Open] 1.9.3-p125 intermittent segfault — "jshow (Jodi Showers)" <jodi@...>

22 messages 2012/04/02

[#44156] [ruby-trunk - Feature #6265][Open] Remove 'useless' 'concatenation' syntax — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

45 messages 2012/04/06

[#44163] [ruby-trunk - Bug #6266][Open] encoding related exception with recent integrated psych — "jonforums (Jon Forums)" <redmine@...>

10 messages 2012/04/06

[#44303] [ruby-trunk - Feature #6284][Open] Add composition for procs — "pabloh (Pablo Herrero)" <pablodherrero@...>

57 messages 2012/04/12

[#44349] [ruby-trunk - Feature #6293][Open] new queue / blocking queues — "tenderlovemaking (Aaron Patterson)" <aaron@...>

10 messages 2012/04/13

[#44402] [ruby-trunk - Feature #6308][Open] Eliminate delegation from WeakRef — "headius (Charles Nutter)" <headius@...>

20 messages 2012/04/17

[#44403] [ruby-trunk - Feature #6309][Open] Add a reference queue for weak references — "headius (Charles Nutter)" <headius@...>

15 messages 2012/04/17

[#44533] [ruby-trunk - Bug #6341][Open] SIGSEGV: Thread.new { fork { GC.start } }.join — "rudolf (r stu3)" <redmine@...>

24 messages 2012/04/22

[#44630] [ruby-trunk - Feature #6361][Open] Bitwise string operations — "MartinBosslet (Martin Bosslet)" <Martin.Bosslet@...>

31 messages 2012/04/26

[#44648] [ruby-trunk - Feature #6367][Open] #same? for Enumerable — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

16 messages 2012/04/26

[#44704] [ruby-trunk - Feature #6373][Open] public #self — "trans (Thomas Sawyer)" <transfire@...>

61 messages 2012/04/27

[#44748] [ruby-trunk - Feature #6376][Open] Feature lookup and checking if feature is loaded — "trans (Thomas Sawyer)" <transfire@...>

13 messages 2012/04/28

[ruby-core:44426] [ruby-trunk - Bug #6312][Open] Psych needlessly noisy parsing string node starting with number-ish string

From: "riffraff (gabriele renzi)" <rff.rff@...>
Date: 2012-04-17 16:26:55 UTC
List: ruby-core #44426
Issue #6312 has been reported by riffraff (gabriele renzi).

----------------------------------------
Bug #6312: Psych needlessly noisy parsing string node starting with number-ish string
https://bugs.ruby-lang.org/issues/6312

Author: riffraff (gabriele renzi)
Status: Open
Priority: Low
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p188 (2012-04-17 revision 35365) [x86_64-darwin10.8.0] 


For example:

     $ ruby -d -rpsych -e 'Psych.load("4 weddings")' 2>&1 | tail -n 2
     Exception `ArgumentError' at /Users/riffraff/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/psych/scalar_scanner.rb:99 - invalid value for Integer(): "4 weddings"
     4 weddings


(tail because there are a bunch more printout due to load/name errors)

This is due to assuming by default that anything that is not another scalar type should be considered first as a YAML !!int, and only if that fails with an exception, as a string.

There was already a specific fix for one instance of this issue (#5186), but it would be nicer to avoid it altogether. 

Small patch attached importing the spec from yaml.org for what an int should be. All psych tests still passing for me.

Notes: 

* I did add a tiny test and some setup/teardown in the specific file so that the debug would be visible on screen. 
It could make sense to replace STDERr with a StringIO and check that but it feels fragile, and I don't know how to test "does not cause debug printouts" otherwise.

* checking for the INT regex makes the check for two "." in integer unnecessary. I have added it back to the float case as  r32957 had fixed the issue but it's been reintroduced (the yaml.org float regexp is wrong or we don't parse the same floats)

* psych treats '1,2' as '12'.  This seem like a bug as I could not see it in the spec, but I have changed the regexp accordingly.

* if the "1,2" == "12" parsing is removed then the String#gsub calls become unnecessary 

* there seem to be many capturing groups in this file which are not really necessary 

* sexagesimal formatting is handled by itself in another node, but it's still in the FLOAT regex so I left it in the INT one too

Hope this is somewhat helpful.


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next