Hi,

A colleage of me just wrote innocent looking code like
        char *shardRelationName = pnstrdup(relationName, NAMEDATALEN);
which is at the moment wrong if relationName isn't preallocated to
NAMEDATALEN size.

/*
 * pnstrdup
 *              Like pstrdup(), but append null byte to a
 *              not-necessarily-null-terminated input string.
 */
char *
pnstrdup(const char *in, Size len)
{
        char       *out = palloc(len + 1);

        memcpy(out, in, len);
        out[len] = '\0';
        return out;
}

isn't that a somewhat weird behaviour / implementation? Not really like
strndup(), which one might believe to be analoguous...

Greetings,

Andres Freund


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to