I wrote: > Hmmm ... looking at PGTYPESnumeric_from_asc, it seems like the current > behavior is different from what was described in that old thread; the only > case where a digit buffer wouldn't be created is a NaN. But maybe a crash > could occur for NaN. Perhaps we should use "if (num->sign != > NUMERIC_NAN)" as a guard?
After sleeping on it, it seems like the right thing to check for is whether num->buf is NULL, which describes precisely the situation where we should not try to make a copy of the digit buffer (and the initial struct memcpy has made a valid copy of the null pointers). So I fixed it like that. regards, tom lane