Mahmoud Taghizadeh <m_taghi@yahoo.com> writes:
> a dirty method to fix this bug is to replace following
> line
> if (isdigit((unsigned char) *s) && dec < fpoint )
> with
> if (isdigit((unsigned char) *s) && ((dec < fpoint) ||
> fpoint == 0))
This patch is wrong. Something involving "!seen_dot || dec < fpoint"
would probably be better. On the other hand, I can see half a dozen
other brokennesses in that routine on idly glancing over it :-(
Are you aware that the monetary type is deprecated and is going to be
dropped entirely pretty soon? I would not recommend that you spend
any time on it, unless you want to commit to doing a wholesale rewrite.
Store your financial data in NUMERIC columns instead --- no overflow
worries, for one thing.
regards, tom lane