diff options
author | Mike Buland <eichlan@xagasoft.com> | 2008-12-31 02:33:43 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2008-12-31 02:33:43 +0000 |
commit | 3893cb63e034180eab0764ee18567a56e8307a80 (patch) | |
tree | 0792c6ba3348c3837de97cb016ec790680ad4a9b /src/cachecalc.h | |
parent | bbe8ee9de8bfbd490336d80e76148663dcbe027f (diff) | |
download | libbu++-3893cb63e034180eab0764ee18567a56e8307a80.tar.gz libbu++-3893cb63e034180eab0764ee18567a56e8307a80.tar.bz2 libbu++-3893cb63e034180eab0764ee18567a56e8307a80.tar.xz libbu++-3893cb63e034180eab0764ee18567a56e8307a80.zip |
Wow, that was a freaky bug. Turned out to not have anything to do with the
size of the table, it had to do with using non pointer types for the key (some
more complex types worked as well, probably because of lazy memory collection)
and then using the [] indexing operators. You wound up with pointers to local
variables that didn't exist by the end of the assignemnt operator.
Strange, but I didn't actually use references inside of all of the Bu::Hash
accessor functions, that means in cases where more complex variables are used
as keys (like Bu::FString) it was making several copies of them per operation
and destroying them all immediately. Now it will be even faster and use much
less memory.
Good catch, David.
Diffstat (limited to 'src/cachecalc.h')
0 files changed, 0 insertions, 0 deletions