Skip to main content
GameDev.net gamedev.net
🔒 Locked

switch...case bug

Started by RCL Sep 3, 2004 at 7:49 AM 2 replies 1.7k views
Original Post
RCL
RCL
Hi There seems to be a bug in AngelScript. Here is the code that reproduces it: ===== 8< ===== int main() { int i; for ( i = 0; i <= 5; i ++ ) { switch ( i ) { case 5: Log( "5" ); break; case 4: Log( "4" ); break; case 3: Log( "3" ); break; case 2: Log( "2" ); break; case 1: Log( "1" ); break; default: Log( "default" ); break; } } return 0; } ===== >8 ===== The output is: ===== 8< ===== default default default default 4 default ===== >8 ===== 'Works' with AngelScript 1.9.0. If cases are sorted ascending, everything is Ok. Cheers, RCL
WitchLord
WitchLord
Thanks, for the detailed report. I'll check it out. If the fix is simple I'll tell you here, otherwise I'll release an update soon.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - <a href="http://www.angelcode.com/tower" rel
WitchLord
WitchLord
I feel really silly now. It turns out that I can't even write a simple bubble sort [wink].

The fix for this bug is to replace the loop in as_compiler.as line 691 with the following:

	for( int fwd = 1; fwd < caseValues.GetLength(); fwd++ )	{		for( int bck = fwd - 1; bck >= 0; bck-- )		{			int bckp = bck + 1;			if( caseValues[bck] > caseValues[bckp] )			{				// Swap the values in both arrays				int swap = caseValues[bckp];				caseValues[bckp] = caseValues[bck];				caseValues[bck] = swap;				swap = caseLabels[bckp];				caseLabels[bckp] = caseLabels[bck];				caseLabels[bck] = swap;			}			else 				break;		}	}
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - <a href="http://www.angelcode.com/tower" rel
RCL
RCL
Quote:
Original post by WitchLord
I feel really silly now. It turns out that I can't even write a simple bubble sort [wink].


Nobody is guaranteed from mistakes :-)

Thanks, it works now.

Cheers,
RCL

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.