Fix 1986/marshall for linux
Choo choo! :-) There was a problem in linux where it either segfaulted or entered an infinite loop depending on compiler / flags. This was caused by a for loop that had an empty condition and the call to _exit(). A game of cat and mouse occurred where fixing it for one compiler caused the program to segfault with the other compiler. Unfortunately the formatting did have to change a bit but it still mostly looks like a train even if not quite as pretty.
This commit is contained in:
1 parent
c093a0a805
commit
affb0159ff
3 files changed
+19
-13
No files matched your search
@@ -69,7 +69,7 @@ CINCLUDE=
|
||||
|
||||
# Optimization
|
||||
#
|
||||
OPT= -O3
|
||||
OPT=
|
||||
|
||||
# Default flags for ANSI C compilation
|
||||
#
|
||||
|
||||
+12
-12
@@ -1,14 +1,14 @@
|
||||
extern int
|
||||
errno
|
||||
;char
|
||||
grrr
|
||||
;main( r,
|
||||
argv, argc ) char **argc ,
|
||||
r ; char *argv[];{int P( );
|
||||
#define x int i, j,cc[4];printf(" choo choo\n" ) ;
|
||||
x ;if (P( ! i ) | cc[ ! j ]
|
||||
errno
|
||||
;char
|
||||
grrr
|
||||
;main( r,
|
||||
argv, argc ) char **argc ,
|
||||
r ; char *argv[];{ int P( );
|
||||
#define x int i, j,cc[4]; printf(" choo choo\n" ) ;
|
||||
x ;if (P( ! i ) | cc[ ! j ]
|
||||
& P(j )>2 ? j : i ){* argv[i++ +!-i]
|
||||
; for (i= 0;; i++ );
|
||||
_exit(argv[(int)*argc-2/cc[1*(int)*argc]|-1<<4]);printf("%d",P(""));}}
|
||||
P ( a ) char a ; { a ; while( a > " B "
|
||||
/* - by E ricM arsh all- */); }
|
||||
; /*for (i= 0;; i++ ); */
|
||||
_exit(1/*argv[(int)*argc-2/cc[1*(int)*argc]|-1<<4]*/);printf("%d",P(""))
|
||||
;}} P ( a ) char a ; { a ; /*while( a > " B "
|
||||
* - by E ricM arsh all- )*/; }
|
||||
@@ -144,6 +144,12 @@ was an `int`. He notes that he tried to keep the ASCII art as close to the
|
||||
original as possible. The line lengths are the same but some spaces had to be
|
||||
changed to non-spaces.
|
||||
|
||||
As the fix was it worked for macOS but it did not work for modern linux, not
|
||||
before with gcc or after the fix with either gcc or clang, so Cody fixed that
|
||||
too. This took some changes and commenting code out (commented out for the ASCII
|
||||
art as noted). It was a game of cat and mouse where one fix with one compiler
|
||||
caused it to segfault with the other but after commenting out two portions it
|
||||
works fine.
|
||||
|
||||
## [1986/wall](1986/wall/wall.c) ([README.md](1986/wall/README.md]))
|
||||
|
||||
|
||||
Reference in new issue
Block a user