Mercurial > repo
view interps/malbolge/malbolge.patch @ 12518:2d8fe55c6e65 draft default tip
<int-e> learn The password of the month is release incident pilot.
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Sun, 03 Nov 2024 00:31:02 +0000 |
parents | 859f9b4339e6 |
children |
line wrap: on
line source
--- malbolge.c 2005-04-21 00:30:33.000000000 +0200 +++ malbolge-new.c 2005-06-03 21:51:11.775304752 +0200 @@ -73,15 +73,13 @@ while ( ( x = getc( f ) ) != EOF ) { if ( isspace( x ) ) continue; - if ( x < 127 && x > 32 ) + if ( x < 33 || x > 126 + || strchr( "ji*p</vo", xlat1[( x - 33 + i ) % 94] ) == NULL ) { - if ( strchr( "ji*p</vo", xlat1[( x - 33 + i ) % 94] ) == NULL ) - { - fputs( "invalid character in source file\n", stderr ); - free( mem ); - fclose( f ); - return ( 1 ); - } + fputs( "invalid character in source file\n", stderr ); + free( mem ); + fclose( f ); + return ( 1 ); } if ( i == 59049 ) { @@ -93,6 +91,8 @@ mem[i++] = x; } fclose( f ); + if ( i < 1 ) mem[i++] = 68; + if ( i < 2 ) mem[i++] = 67; while ( i < 59049 ) mem[i] = op( mem[i - 1], mem[i - 2] ), i++; exec( mem ); free( mem ); @@ -108,7 +108,7 @@ int x; for (;;) { - if ( mem[c] < 33 || mem[c] > 126 ) continue; + if ( mem[c] < 33 || mem[c] > 126 ) return; switch ( xlat1[( mem[c] - 33 + c ) % 94] ) { case 'j': d = mem[d]; break; @@ -130,7 +130,7 @@ break; case 'v': return; } - mem[c] = xlat2[mem[c] - 33]; + if ( mem[c] >= 33 && mem[c] <= 126 ) mem[c] = xlat2[mem[c] - 33]; if ( c == 59048 ) c = 0; else c++; if ( d == 59048 ) d = 0; else d++; }