[#56333] [CommonRuby - Feature #8723][Open] Array.any? predicate returns true for empty array. — "nurettin (Nurettin Onur TUGCU)" <onurtugcu@...>

12 messages 2013/08/02

[#56368] [ruby-trunk - Bug #8730][Open] "rescue Exception" rescues Timeout::ExitException — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

15 messages 2013/08/04

[#56407] [ruby-trunk - misc #8741][Open] email notification on bugs.ruby-lang.org is broken — "rits (First Last)" <redmine@...>

18 messages 2013/08/05

[#56524] [ruby-trunk - Bug #8770][Open] [PATCH] process.c: avoid EINTR from Process.spawn — "normalperson (Eric Wong)" <normalperson@...>

19 messages 2013/08/10

[#56536] [ruby-trunk - Feature #8772][Open] Hash alias #| merge, and the case for Hash and Array polymorphism — "trans (Thomas Sawyer)" <redmine@...>

24 messages 2013/08/11

[#56544] [ruby-trunk - Bug #8774][Open] rb_file_dirname return wrong encoding string when dir is "." — jiayp@... (贾 延平) <jiayp@...>

10 messages 2013/08/11

[#56569] [ruby-trunk - Feature #8781][Open] Use require_relative() instead of require() if possible — "ko1 (Koichi Sasada)" <redmine@...>

31 messages 2013/08/12
[#56582] [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — "drbrain (Eric Hodel)" <drbrain@...7.net> 2013/08/12

[#56584] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — SASADA Koichi <ko1@...> 2013/08/12

(2013/08/13 2:25), drbrain (Eric Hodel) wrote:

[#56636] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — Aaron Patterson <tenderlove@...> 2013/08/16

On Tue, Aug 13, 2013 at 07:38:01AM +0900, SASADA Koichi wrote:

[#56634] [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2013/08/16

[#56648] [ruby-trunk - Bug #8795][Open] "Null byte in string error" on Marshal.load — "mml (McClain Looney)" <m@...>

17 messages 2013/08/16

[#56824] [ruby-trunk - Feature #8823][Open] Run trap handler in an independent thread called "Signal thread" — "ko1 (Koichi Sasada)" <redmine@...>

14 messages 2013/08/27

[#56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "knu (Akinori MUSHA)" <knu@...>

11 messages 2013/08/30

[#56890] [ruby-trunk - Feature #8839][Open] Class and module should return the class or module that was opened — "headius (Charles Nutter)" <headius@...>

26 messages 2013/08/30

[#56894] [ruby-trunk - Feature #8840][Open] Yielder#state — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

14 messages 2013/08/30

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

From: "zzak (Zachary Scott)" <e@...>
Date: 2013-08-14 20:12:29 UTC
List: ruby-core #56621
Issue #6312 has been updated by zzak (Zachary Scott).


I get a NameError exception when I try to run your example on trunk:

Exception `NameError' at /Users/zzak/.rubies/ruby-trunk/lib/ruby/2.1.0/psych/core_ext.rb:29 - method `yaml_as' not defined in Module
Exception `NameError' at /Users/zzak/.rubies/ruby-trunk/lib/ruby/2.1.0/psych/deprecated.rb:81 - undefined method `to_yaml_properties' for class `Object'
----------------------------------------
Bug #6312: Psych needlessly noisy parsing string node starting with number-ish string
https://bugs.ruby-lang.org/issues/6312#change-41159

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


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