On 8/8/07, Joshua Hoblitt <[EMAIL PROTECTED]> wrote:
> On Wed, Aug 08, 2007 at 12:17:17AM -0700, chromatic wrote:
> > The string_from_cstring() function has a slight flaw, in that it has to
> > allocate a piece of memory and create a C-style string from a nice happy
> > STRING.  It's the responsibility of the caller to discard the C string
> > appropriately.
> >
> > This is tricky if that string immediately gets passed to real_exception() or
> > some other C function which does not return control; there's no chance to
> > free the string with string_cstring_free().
>
> I hate to sound like the nag here but why don't we just not write code
> in form 'real_exception(string_from_cstring(foo))'.  Part of living with
> dynamic memory allocating is dealing with the line bloat of shoving that
> free() call in there.
>
i'm not a great c programmer, so could you explain to me what code
should look like instead of what it shouldn't? here's the code at
src/pmc/delegate.pmc, line 51 as an example (copied here):

        _class = string_to_cstring(interp, pmc->vtable->whoami);

    real_exception(interp, NULL, E_LookupError,
        "Can't find vtable method '%s' in class '%s'", meth, _class);

    /* sorry, can't do this here. will it leak?
    string_cstring_free(_class);
    */

~jerry

Reply via email to