Mercurial > repo
diff interps/malbolge/malbolge.patch @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/interps/malbolge/malbolge.patch Sun Dec 09 19:30:08 2012 +0000 @@ -0,0 +1,51 @@ +--- 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++; + }