Comment 13 for bug 456870

Revision history for this message
Edward K. Ream (edreamleo) wrote :

The following hack seems to repair the damage. Change:

def _set_proxied(const):
    if not hasattr(const, '__proxied'):
        const.__proxied = _CONST_PROXY[const.value.__class__]
    return const.__proxied

To:

def _set_proxied(const):
    const._proxied = _CONST_PROXY[const.value.__class__]
    return const._proxied

As you can see, there are two major changes to the code:

1. The code uses _proxied instead of __proxied.

I don't see any other uses of __proxied anywhere,
so this would seem like what was originally intended,
but there are absolutely no guarantees.

2. The code always sets const._proxied.

In my test, _set_proxied wasn't called often enough for this to be a concern.
Presumably the GC can handle the "wasted" space.

*Warning*: I've just begun to test this. Please use caution. It will be good to hear reports from others about how this works for them.