Re: DELETEP, FREEP, and friends

From: Paul Rohr (paul@abisource.com)
Date: Mon Jun 03 2002 - 11:00:56 EDT

  • Next message: Paul Rohr: "Re: Using of system-wide ispell dictionaries"

    At 04:33 PM 6/2/02 +0200, Joaquín Cuenca Abela wrote:
    >On Thu, 2002-05-30 at 20:23, Tomas Frydrych wrote:
    >> > In short, the whole reason we created those macros was to ensure that
    >> > all delete, free, etc. calls did all of the nice null-sanity work
    >> > you'd usually want. Thus instead of typing the risky:
    >> >
    >> > delete m_pHeaderSL;
    >>
    >> Correct me if I am mistaken, but the c++ operator is designed to
    >> handle NULLs, so it is not really necessary to this kind of a check;
    >> its a different story with free though, isn't it?
    >
    >afaik free should also handle NULLs, but it was not the case in older
    >versions of ANSI C, so I guess that there are still out there some
    >compilers that don't handle the free(NULL); case

    Yep. I chose a bad example in my original post. FREEP needs to do the null
    check first for exactly this reason.

    I suppose that theoretically you might want the null check in DELETEP to
    guard against a malicious/incompetent plugin who implemented a class that
    overrode the delete operator in ways that didn't check for nulls. If that
    sounds as ridiculous to everyone else as it does to me [1], then by all
    means simplify the macro accordingly.

    The whole point of the original message stands, though -- there's definitely
    no need to null-guard any calls to DELETEP and friends. ;-)

    >Btw, if we want to keep DELETEP, we can make it a bit more useful than
    >now (the only useful bit right now if the ptr = NULL; part).

    I can't comment on the suggested modification, but I would recommend we keep
    *some* well-tuned version of DELETEP and friends. Not only do they save
    typing, but they've also fixed a number of bugs in the past.

    Paul

    [1] Given how wide-open our current ABI_EXPORT strategy is for enabling
    plugins, there are many less-obscure ways for a broken plugin to do Bad
    Things to our application.



    This archive was generated by hypermail 2.1.4 : Mon Jun 03 2002 - 11:05:01 EDT