{"push_id":762490260,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"99ef371eb7469af74fa06f42358c7f79bfd32c13","before":"aa5aebc8b7c37bb2ecaea937366be2561663e7c4","commits":[{"sha":"99ef371eb7469af74fa06f42358c7f79bfd32c13","author":{"email":"760e7dab2836853c63805033e514668301fa9c47@hostilefork.com","name":"Hostile Fork"},"message":"Skip stack-relative lookups in forming call frames\n\nI knew it was possible to leak out a word from a stack relative\nframe lookup and then try to look it up in a forming frame, but I\nfigured any code that did so would be broken and so an assert\nwould be good to notify people of that.  What I missed was that\nthe mechanics of the previous code was such that forming\nframes...though positionally deeper in the stack than the frames\nwhich would sneakily look into them...were still not considered\nas candidates for stack-relative lookup.\n\nWhich is a long way of saying Rebol3 already gave an error on\ncases like this, when I thought it was letting it slip:\n\n    leaker: func [/eval e /gimme g] [\n        either gimme [return [g]] [reduce e]\n    ]\n\n    leaker/eval reduce leaker/gimme 10\n\nSo my assert really should have been an error, and now it is.\nI'll note that it's picks up an improved error, as before it was:\n\n** Script error: g word is not bound to a context\n\nBut now it is:\n\n** Script error: g word is bound relative to context not on stack","distinct":true,"url":"https://api.github.com/repos/metaeducation/ren-c/commits/99ef371eb7469af74fa06f42358c7f79bfd32c13"}]}