Hi all,

I was just looking through libpq large object code an noticed what seemed
to be a bug. The function lo_create() is declared as Oid yet it contains
the following code:

    if (conn->lobjfuncs == (PGlobjfuncs *) NULL)
    {
        if (lo_initialize(conn) < 0)
            return -1;
    }

If lo_initialize returns < 0, you have some pretty serious problems - out
of memory, conn is invalid, etc. However, casting -1 to Oid returns what
seems to be a valid Oid. Shouldn't it return InvalidOid?

Gavin




Mon, 17 Sep 2001 18:37:49 +1000 (EST)
Gavin Sherry <swm@linuxworld.com.au>
lo_creat() bug
Gavin Sherry <swm@linuxworld.com.au> writes:
> If lo_initialize returns < 0, you have some pretty serious problems - out
> of memory, conn is invalid, etc. However, casting -1 to Oid returns what
> seems to be a valid Oid. Shouldn't it return InvalidOid?

Yes, evidently so.  Good catch!

			regards, tom lane

Mon, 17 Sep 2001 10:32:10 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: lo_creat() bug 