Re: [HACKERS] Try to fix endless loop in ecpg with informix mode
От | 高增琦 |
---|---|
Тема | Re: [HACKERS] Try to fix endless loop in ecpg with informix mode |
Дата | |
Msg-id | CAFmBtr0+X+W5DR8CiDNjAii7NAn_QW0mu-nOj2_T43iaenmiPw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Try to fix endless loop in ecpg with informix mode (Michael Meskes <meskes@postgresql.org>) |
Ответы |
Re: [HACKERS] Try to fix endless loop in ecpg with informix mode
Re: [HACKERS] Try to fix endless loop in ecpg with informix mode |
Список | pgsql-hackers |
Thanks for commit.
I am afraid the changes may separate "7.a" to "7" and "a", then error out```
- } while (**scan_length != ' ' && **scan_length != '\0');
- return false;
+ } while (isdigit(**scan_length));
```
2017-11-01 20:35 GMT+08:00 Michael Meskes <meskes@postgresql.org>:
> Any comments?
Sorry, I've been working through the backlog of three weeks of
traveling.
> > I tried some tests with ecpg informix mode.
> > When trying to store float data into a integer var, I got endless
> > loop.
> >
> > The reason is:
> > In informix mode, ecpg can accept
> > string form of float number when processing query result.
> > During checking the string form of float number, it seems
> > that ecpg forgot to skip characters after '.'.
> > Then outer loop will never stop because it hopes to see '\0'.
> >
> > The first patch will reproduce the problem in ecpg's regress test.
> > The second patch tries to fix it in simple way.
Thanks for spotting and fixing. I changed your patch slightly and made
it check if the rest of the data is indeed digits, or else it would
accept something like "7.hello" as "7".
Committed.
Michael
--
Michael Meskes
Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
Meskes at (Debian|Postgresql) dot Org
Jabber: michael at xmpp dot meskes dot org
VfL Borussia! Força Barça! SF 49ers! Use Debian GNU/Linux, PostgreSQL
--
В списке pgsql-hackers по дате отправления: