On 03/02/2009 10:36 AM, Kinkie wrote:
> BUT MemPools are initialized AFTER global variables, and thus a global
> definition such as:
> SBuf foo("some initializer");
> causes the SBuf to grow()
> which calls memAllocString
> which tries to locate a pool, and fails because the pools are not yet ready.
> (run...)
> at program exit()
> ~SBuf
> calls ~MemBlob
> which calls memFreeString
> which asserts unless by sheer chance the MemBlob has the exact same
> size of a pool, and if it does the results are unpredicatable anyways.
>
> Hacking my way around this is painful, and is causing me to touch
> things I'd really rather not touch as much (mem.cc)
> isLiteral/isImported had the dubious advantage of flagging in the
> object themselves whether they were obtained from pools or from some
> form of malloc or string constant. I can't really imagine a different
> solution which doesn't break layering.
>
> Do you have any suggestion?
>
Do not use memory pools for StingNg strings, for now. MemPools need to
be fixed to work at startup time but that fix is out of this project scope.
HTH,
Alex.
Received on Mon Mar 02 2009 - 23:38:47 MST
This archive was generated by hypermail 2.2.0 : Tue Mar 03 2009 - 12:00:03 MST