GNU bug report logs -
#3467
23.0.94; let + make-local-variable => let value made global
Previous Next
Full log
View this message in rfc822 format
Rethinking. Everything is wrong in my solution and suggestion. Coming back.
On Sat, Jun 6, 2009 at 10:11 PM, Lennart
Borgman<lennart.borgman <at> gmail.com> wrote:
> On Sat, Jun 6, 2009 at 12:48 AM, Lennart
> Borgman<lennart.borgman <at> gmail.com> wrote:
>>
>> Sigh, and my suggestion was of course unnecessary stupid. What is
>> needed is of course to record values and frame+buffer localness and
>> dito values and reset them. Nothing less than this will ever work
>> correctly, or?
>>
>> And does not this apply to all uses of specbind + unbind_to?
>>
>> Can it be sufficient to just change specbind and unbind_to? Is there
>> anything else that will be affected by changes in the specbind stack?
>> Since info about buffer+frame is alwas needed should specbinding be
>> changed to the below form?
>>
>> struct specbinding
>> {
>> Lisp_Object symbol;
>> Lisp_Object old_value;
>> Lisp_Object old_buffer_value;
>> Lisp_Object old_frame_value;
>> specbinding_func func;
>> Lisp_Object unused; /* Dividing by 16 is faster than by 12 */
>> Lisp_Object unused;
>> Lisp_Object unused;
>> };
>
> Here is a bit modified suggestion and some code where I try to
> implement it. Please notice that I have not tested the code. It is
> very possible that I have misunderstood something so please look at
> the code.
>
> struct specbinding
> {
> Lisp_Object symbol;
> Lisp_Object old_value;
> specbinding_func func;
> // total 8 fields
> Lisp_Object need_test_local;
> Lisp_Object old_buffer;
> Lisp_Object old_buffer_value;
> Lisp_Object old_frame;
> Lisp_Object old_frame_value;
> //Lisp_Object unused; /* Dividing by 16 is faster than by 12 */
> };
>
This bug report was last modified 9 years and 201 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.