Re: [BUG] Uninitializaed configOut.leafType used.
От | Andres Freund |
---|---|
Тема | Re: [BUG] Uninitializaed configOut.leafType used. |
Дата | |
Msg-id | 20191113180320.gl27ldjjgex2x6ad@alap3.anarazel.de обсуждение исходный текст |
Ответ на | RE: [BUG] Uninitializaed configOut.leafType used. (Ranier Vilela <ranier_gyn@hotmail.com>) |
Ответы |
RE: [BUG] Uninitializaed configOut.leafType used.
|
Список | pgsql-bugs |
Hi, On 2019-11-13 17:55:40 +0000, Ranier Vilela wrote: > Ok, so all these commands are for what? "commands"? > case SPGIST_CONFIG_PROC: > ok = check_amproc_signature(procform->amproc, VOIDOID, true, > 2, 2, INTERNALOID, INTERNALOID); > configIn.attType = procform->amproclefttype; > memset(&configOut, 0, sizeof(configOut)); > > OidFunctionCall2(procform->amproc, > PointerGetDatum(&configIn), > PointerGetDatum(&configOut)); > > configOutLefttype = procform->amproclefttype; > configOutRighttype = procform->amprocrighttype; > > /* > * When leaf and attribute types are the same, compress > * function is not required and we set corresponding bit in > * functionset for later group consistency check. > */ > if (!OidIsValid(configOut.leafType) || > configOut.leafType == configIn.attType) > { > > When case SPGIST_CONFIG_PROC, OidIsValid(configOut.leafType) is tested, > but when case SPGIST_COMPRESS_PROC is fired, OidIsValid(configOut.leafType) is not necessary and configOut.leafType > happy accessed? Even if that were a problem - and I don't see why - that'd still not make configOut.leafType be uninitialized. The SPGIST_CONFIG_PROC case is always hit before SPGIST_COMPRESS_PROC, therefore configOut is always initialized (c.f. memset(0) and the call to amproc to initialize the contents). And the OidIsValid() call is about whether a leafType is set or not, the call to check_amproc_signature() doesn't need that. - Andres
В списке pgsql-bugs по дате отправления: