Обсуждение: lo_creat() bug

Поиск
Список
Период
Сортировка

lo_creat() bug

От
Gavin Sherry
Дата:
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





Re: lo_creat() bug

От
Tom Lane
Дата:
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