[MacRuby] #1313: #to_json will cause a stack overflow if generating a collection with objective-c objects
MacRuby
ruby-noreply at macosforge.org
Tue Jun 21 18:24:43 PDT 2011
#1313: #to_json will cause a stack overflow if generating a collection with
objective-c objects
------------------------------------+---------------------------------------
Reporter: mrada@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: critical | Milestone:
Component: MacRuby | Keywords: reduction 0.11-blocker
------------------------------------+---------------------------------------
Comment(by mrada@…):
The problem with that solution is that it would only stop the crash.
We would still be generating incorrect JSON for NSDictionary since
NSDictionary#to_s will be called and it does not generate a valid JSON
hash.
Then, there is the additional problem that the Object#to_json method is
not defined when loading the ext version of json, which means that code
that depends on #to_json to be defined on all objects will break.
I think the best solution to the problem is
https://github.com/ferrous26/MacRuby/commit/bd65650315b, this is because
of the way that the generator methods are mixed in the proper classes.
However, the same fix cannot be applied to C version of json because of
#1326.
The other possible fix is to make a change to the method that mixes the
generators in so that it mixes them in to the proper Foundation classes.
Then there is still
https://github.com/ferrous26/MacRuby/commit/8a0f79a5122c8, which adds
proper detection, otherwise we are depending on the #to_json or the
#to_json.to_s catch-all at the bottom which just adds needless overhead to
the generation. Though I think this is something I can push upstream.
--
Ticket URL: <http://www.macruby.org/trac/ticket/1313#comment:5>
MacRuby <http://macruby.org/>
More information about the macruby-tickets
mailing list