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 >