While at it the  assert(cnfa != NULL && cnfa->nstates != 0);   at
src/backend/regex/rege_dfa.c:282
is issued too late indeed at line 278 and 279 cnfa was already
dereferenced.

Same for assert(t != NULL) in src/backend/regex/regexec.c:821 is issued way
too late.




On Thu, 28 May 2015 at 15:59 Tom Lane <t...@sss.pgh.pa.us> wrote:

> Robert Haas <robertmh...@gmail.com> writes:
> > On Wed, May 27, 2015 at 8:57 PM, Haribabu Kommi
> > <kommi.harib...@gmail.com> wrote:
> >> By correcting the following way will solve the problem.
> >> return ts ? (*ts != 0) : false; instead of retun *ts != 0;
> >> Attached a patch for it.
>
> > If the only caller always passes a valid pointer, there's no point in
> > adding this check.  We have many functions in our source base that
> > assume that the caller will pass a valid pointer, and changing them
> > all would make the code bigger, harder to read, and possibly slower,
> > without any real benefit.
>
> Well, we should either install something like Haribabu's patch, or else
> remove the existing tests in the function that allow "ts" to be NULL.
> And the function's API contract comment needs to be clarified in either
> case; the real bug here is lack of a specification.
>
> I don't particularly have an opinion on whether it's valuable to allow
> this function to be called without receiving a timestamp back.  Perhaps
> the authors of the patch can comment on that.
>
>                         regards, tom lane
>

Reply via email to