> > Why do you think there should be one? My memory might be wrong but > > I > > don't think it's supposed to be a null terminated string. > > That field is defined as char[5] in struct sqlca_t, so the intent is > clearly that it not be null terminated. However, it looks to me like > there'd be at least one alignment-padding byte after it, and that > byte > is likely to be 0 in a lot of situations (particularly for statically > allocated sqlca_t's). So a lot of the time, you could get away with > using strcmp() or other functions that expect null termination.
With "supposed" I was referring to the standard that defines SQLCA. > I'm thinking therefore that there's probably code out there that > tries > to do strcmp(sqlca->sqlstate, "22000") or suchlike, and it works > often > enough that the authors haven't identified their bug. The question > is > do we want to try to make that be valid code. > > Changing the field declaration to char[5+1] would be easy enough, but > I have no idea how many places in ecpglib would need to change to > make > sure that the last byte gets set to 0. I doubt it'll be a lot. However, it would make us differ, albeit very slightly, from what others do. I haven't come up with a practical problem coming from that difference though. 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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers