From: "Berger, Daniel" Date: 2005-06-07T03:33:52+09:00 Subject: Re: [PATCH] 1.8.3 p1 segfault in array.c- bccwin32 - bcc5.5 (free) compiler bug > -----Original Message----- > From: daz [mailto:dooby@d10.karoo.co.uk] > Sent: Monday, June 06, 2005 12:21 PM > To: ruby-core > Subject: [PATCH] 1.8.3 p1 segfault in array.c- bccwin32 - > bcc5.5 (free) compiler bug > > > > Hi, > > There's a line in array.c which confuses the Borland 5.5 > compiler optimizer into corrupting a pointer held in a register. > > Use of -O2 flag with the 'free' compiler causes a SEGV in > miniruby during the bccwin32 build process. > > I tried to produce a small test case for the Borland > community to comment on but without success, so I can't say > if this is a known problem or even what the problem is. It > doesn't occur anywhere else in the 183p1 source. > > Fix has a much smaller impact than adding 'volatile' would have. > > I don't like the code change, especially as it means the same > thing but it will be preferable to the SEGV if you can bear it. I don't know assembler very well, so forgive my ignorance, but does it help to add parens? - if (TYPE(a) == T_STRING && TYPE(b) == T_STRING) { + if ((TYPE(a) == T_STRING) && (TYPE(b) == T_STRING)) { Just curious. Dan