# New Ticket Created by Mark Glines # Please include the string: [perl #43805] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43805 >
C89 apparently added EXIT_SUCCESS and EXIT_FAILURE, because VMS has a different idea of what constitutes "success". Anyway, splint warns about it. Builds fine on linux/x86, and test results are unchanged. Mark
Index: src/ops/debug.ops =================================================================== --- src/ops/debug.ops (revision 19783) +++ src/ops/debug.ops (working copy) @@ -102,7 +102,7 @@ PDB_run_command(interp,command); } /* RT#42378 this is not ok */ - exit(0); + exit(EXIT_SUCCESS); } interp->pdb->cur_opcode = (opcode_t *)cur_opcode + 1; PDB_set_break(interp,NULL); Index: src/gc/resources.c =================================================================== --- src/gc/resources.c (revision 19783) +++ src/gc/resources.c (working copy) @@ -101,7 +101,7 @@ if (!new_block) { fprintf(stderr, "out of mem allocsize = %d\n", (int)alloc_size); - exit(1); + exit(EXIT_FAILURE); } new_block->free = alloc_size; @@ -208,7 +208,7 @@ if (pool->top_block->free < size) { fprintf(stderr, "out of mem\n"); - exit(1); + exit(EXIT_FAILURE); } } } Index: src/bignum.c =================================================================== --- src/bignum.c (revision 19783) +++ src/bignum.c (working copy) @@ -706,7 +706,7 @@ void BN_exception(PINTD_ BN_EXCEPTIONS exception, const char* message) { printf("Exception %d %s\n", exception, message); - exit(0); + exit(EXIT_SUCCESS); } /* Index: src/pdump.c =================================================================== --- src/pdump.c (revision 19783) +++ src/pdump.c (working copy) @@ -172,7 +172,7 @@ "the platform's native\n"); printf("\t binary format for better efficiency on reading " "non native PBCs\n"); - exit(0); + exit(EXIT_SUCCESS); } static struct longopt_opt_decl options[] = { @@ -256,19 +256,19 @@ pack = (opcode_t*) mem_sys_allocate(size); if (!pack) { printf("out of mem\n"); - exit(1); + exit(EXIT_FAILURE); } PackFile_pack(interp, interp->code->base.pf, pack); if (strcmp(file, "-") == 0) fp = stdout; else if ((fp = fopen(file, "wb")) == 0) { printf("Couldn't open %s\n", file); - exit(1); + exit(EXIT_FAILURE); } if ((1 != fwrite(pack, size, 1, fp))) { printf("Couldn't write %s\n", file); - exit(1); + exit(EXIT_FAILURE); } fclose(fp); mem_sys_free(pack); Index: src/exceptions.c =================================================================== --- src/exceptions.c (revision 19783) +++ src/exceptions.c (working copy) @@ -94,7 +94,7 @@ # define dumpcore() \ fprintf(stderr, "Sorry, coredump is not yet implemented " \ "for this platform.\n\n"); \ - exit(1); + exit(EXIT_FAILURE); #endif /* Index: src/io/io_unix.c =================================================================== --- src/io/io_unix.c (revision 19783) +++ src/io/io_unix.c (working copy) @@ -1031,7 +1031,7 @@ close(STDIN_FILENO); close(fds[1]); if (dup(fds[0]) != STDIN_FILENO) { - exit(0); + exit(EXIT_SUCCESS); } } else { @@ -1042,7 +1042,7 @@ if (dup(fds[0]) != STDIN_FILENO || dup(fds[1]) != STDOUT_FILENO || dup(fds[1]) != STDERR_FILENO) { - exit(0); + exit(EXIT_SUCCESS); } } /* @@ -1059,7 +1059,7 @@ execv(cmd, argv); /* XXX use execvp ? */ /* Will never reach this unless exec fails. */ perror("execvp"); - exit(1); + exit(EXIT_FAILURE); } perror("fork"); Index: compilers/imcc/instructions.c =================================================================== --- compilers/imcc/instructions.c (revision 19783) +++ compilers/imcc/instructions.c (working copy) @@ -564,7 +564,7 @@ default: fprintf(stderr, "unhandled: opsize (%d), op %s, fmt %s\n", ins->opsize, ins->op, ins->fmt); - exit(1); + exit(EXIT_FAILURE); break; } return len; Index: compilers/imcc/imclexer.c =================================================================== --- compilers/imcc/imclexer.c (revision 19783) +++ compilers/imcc/imclexer.c (working copy) @@ -5300,7 +5300,7 @@ if (!interp) { fprintf(stderr, "Argh, interp not found\n"); - exit (1); + exit (EXIT_FAILURE); } yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner); Index: compilers/imcc/main.c =================================================================== --- compilers/imcc/main.c (revision 19783) +++ compilers/imcc/main.c (working copy) @@ -240,7 +240,7 @@ extern int yydebug; if (*argc == 1) { usage(stderr); - exit(0); + exit(EXIT_SUCCESS); } run_pbc = 1; @@ -313,7 +313,7 @@ break; case OPT_RUNTIME_PREFIX: printf("%s\n", Parrot_get_runtime_prefix(interp, NULL)); - exit(0); + exit(EXIT_SUCCESS); break; case 'V': Parrot_version(interp); @@ -750,7 +750,7 @@ IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) { if (yyparse(yyscanner, interp)) - exit(1); + exit(EXIT_FAILURE); imc_compile_all_units(interp); } Index: compilers/imcc/parser_util.c =================================================================== --- compilers/imcc/parser_util.c (revision 19783) +++ compilers/imcc/parser_util.c (working copy) @@ -1245,7 +1245,7 @@ if (!ch) { /* no fatal here, else we get recursion */ fprintf(stderr, "illegal format at %s\n", cp); - exit(1); + exit(EXIT_FAILURE); } /* ok, we have a valid format char */ ++fmt; Index: compilers/pirc/src/pirmain.c =================================================================== --- compilers/pirc/src/pirmain.c (revision 19783) +++ compilers/pirc/src/pirmain.c (working copy) @@ -128,7 +128,7 @@ default: fprintf(stderr, "Unknown option: '%c'\n", opt); print_help(); - exit(1); + exit(EXIT_FAILURE); } /* get next commandline argument */ argv++; @@ -138,7 +138,7 @@ if (argv[0] == NULL) { fprintf(stderr, "No file specified. Try -h for help.\n"); - exit(1); + exit(EXIT_FAILURE); } /* create a vtable based on the desired output */ @@ -166,7 +166,7 @@ break; default: fprintf(stderr, "Unknown output type specified\n"); - exit(1); + exit(EXIT_FAILURE); } /* create a new parser, specifying the file name and the vtable */ Index: compilers/pirc/src/pastout.c =================================================================== --- compilers/pirc/src/pastout.c (revision 19783) +++ compilers/pirc/src/pastout.c (working copy) @@ -283,7 +283,7 @@ vtable->data = (emit_data *)malloc(sizeof(emit_data)); if (vtable->data == NULL) { fprintf(stderr, "Failed to allocate memory for vtable data\n"); - exit(1); + exit(EXIT_FAILURE); } vtable->data->indent = 0; vtable->data->outputfile = outputfile; Index: compilers/pirc/src/jsonout.c =================================================================== --- compilers/pirc/src/jsonout.c (revision 19783) +++ compilers/pirc/src/jsonout.c (working copy) @@ -405,7 +405,7 @@ vtable->data = (emit_data *)malloc(sizeof(emit_data)); if (vtable->data == NULL) { fprintf(stderr, "Failed to allocate memory for vtable data\n"); - exit(1); + exit(EXIT_FAILURE); } vtable->data->indent = 0; vtable->data->outputfile = outputfile; Index: compilers/pirc/src/pirparser.c =================================================================== --- compilers/pirc/src/pirparser.c (revision 19783) +++ compilers/pirc/src/pirparser.c (working copy) @@ -128,7 +128,7 @@ p->heredoc_ids = NULL; free(p); p = NULL; - exit(0); + exit(EXIT_SUCCESS); } @@ -166,7 +166,7 @@ if (p == NULL) { fprintf(stderr, "no parser"); - exit(1); + exit(EXIT_FAILURE); } p->lexer = new_lexer(filename); p->curtoken = next_token(p->lexer); Index: compilers/pirc/src/pirout.c =================================================================== --- compilers/pirc/src/pirout.c (revision 19783) +++ compilers/pirc/src/pirout.c (working copy) @@ -278,7 +278,7 @@ vtable->data = (emit_data *)malloc(sizeof(emit_data)); if (vtable->data == NULL) { fprintf(stderr, "Failed to allocate memory for vtable data\n"); - exit(1); + exit(EXIT_FAILURE); } vtable->data->outputfile = outputfile; Index: compilers/pirc/src/pirvtable.c =================================================================== --- compilers/pirc/src/pirvtable.c (revision 19783) +++ compilers/pirc/src/pirvtable.c (working copy) @@ -63,7 +63,7 @@ if (vtable == NULL) { fprintf(stderr, "Failed to allocate memory for vtable!\n"); - exit(1); + exit(EXIT_FAILURE); } /* set all entries to 'default' by default. This way, another output module Index: compilers/pirc/src/pirutil.c =================================================================== --- compilers/pirc/src/pirutil.c (revision 19783) +++ compilers/pirc/src/pirutil.c (working copy) @@ -61,7 +61,7 @@ if (file == NULL) { fprintf(stderr, "Failed to open file '%s' in mode '%s'\nTerminating\n", filename, mode); - exit(1); + exit(EXIT_FAILURE); } return file; Index: compilers/pirc/src/pirlexer.c =================================================================== --- compilers/pirc/src/pirlexer.c (revision 19783) +++ compilers/pirc/src/pirlexer.c (working copy) @@ -614,7 +614,7 @@ if (filebuff == NULL) { fprintf(stderr, "Error in read_file(): failed to allocate memory for file buffer\n"); - exit(1); + exit(EXIT_FAILURE); } filebuff->filename = clone_string(filename); @@ -632,7 +632,7 @@ if (filebuff->buffer == NULL) { fprintf(stderr, "Error in read_file(): failed to allocate memory for file contents\n"); - exit(1); + exit(EXIT_FAILURE); } /* initialize other fields */ @@ -925,7 +925,7 @@ lexer_state *lexer = (lexer_state *)malloc(sizeof(lexer_state)); if (lexer == NULL) { fprintf(stderr, "Error in new_lexer(): failed to allocate memory for lexer\n"); - exit(1); + exit(EXIT_FAILURE); } lexer->token_chars = (char *)calloc(MAX_ID_LENGTH, sizeof(char)); @@ -1626,7 +1626,7 @@ if (lexer->curfile->curchar >= lexer->curfile->buffer+lexer->curfile->filesize) { printf("FATAL: end of file passed!\n"); } - exit(1); + exit(EXIT_FAILURE); } } Index: t/pmc/bignum.t =================================================================== --- t/pmc/bignum.t (revision 19783) +++ t/pmc/bignum.t (working copy) @@ -197,7 +197,7 @@ case 5 : context.rounding = ROUND_FLOOR; break; default : printf("Unknown rounding %i\n", round); - exit(1); + exit(EXIT_FAILURE); } one = BN_from_string(lef, &context); @@ -230,7 +230,7 @@ break; default : printf("No operation of type %i\n", oper); - exit(0); + exit(EXIT_SUCCESS); } BN_to_scientific_string(result, &output); Index: t/src/compiler.t =================================================================== --- t/src/compiler.t (revision 19783) +++ t/src/compiler.t (working copy) @@ -55,7 +55,7 @@ comp = VTABLE_get_pmc_keyed_str(interp, compreg, pir); if (PMC_IS_NULL(comp) || !VTABLE_defined(interp, comp)) { PIO_eprintf(interp, "Pir compiler not loaded"); - exit(1); + exit(EXIT_FAILURE); } /* * compile source @@ -64,7 +64,7 @@ if (PMC_IS_NULL(prog) || !VTABLE_defined(interp, prog)) { PIO_eprintf(interp, "Pir compiler returned no prog"); - exit(1); + exit(EXIT_FAILURE); } /* keep eval PMC alive */ dod_register_pmc(interp, prog); @@ -138,7 +138,7 @@ comp = VTABLE_get_pmc_keyed_str(interp, compreg, pir); if (PMC_IS_NULL(comp) || !VTABLE_defined(interp, comp)) { PIO_eprintf(interp, "Pir compiler not loaded"); - exit(1); + exit(EXIT_FAILURE); } /* @@ -148,7 +148,7 @@ if (PMC_IS_NULL(prog) || !VTABLE_defined(interp, prog)) { PIO_eprintf(interp, "Pir compiler returned no prog"); - exit(1); + exit(EXIT_FAILURE); } /* keep eval PMC alive */ dod_register_pmc(interp, prog); @@ -213,7 +213,7 @@ if (PMC_IS_NULL(prog) || !VTABLE_defined(interp, prog)) { PIO_eprintf(interp, "Pir compiler returned no prog"); - exit(1); + exit(EXIT_FAILURE); } /* keep eval PMC alive */ dod_register_pmc(interp, prog); @@ -249,7 +249,7 @@ comp = VTABLE_get_pmc_keyed_str(interp, compreg, pir); if (PMC_IS_NULL(comp) || !VTABLE_defined(interp, comp)) { PIO_eprintf(interp, "Pir compiler not loaded"); - exit(1); + exit(EXIT_FAILURE); } compile_run(interp, c_src, pir, argc, argv); compile_run(interp, c2_src, pir, argc, argv); Index: config/gen/cpu/i386/memcpy_mmx_in.c =================================================================== --- config/gen/cpu/i386/memcpy_mmx_in.c (revision 19783) +++ config/gen/cpu/i386/memcpy_mmx_in.c (working copy) @@ -73,7 +73,7 @@ for (i = 0; i < n; ++i) { if (d[i] != (i & 0xff)) { printf("error s[%d] = %d d = %d\n", i, s[i], d[i]); - exit(1); + exit(EXIT_FAILURE); } } puts("ok"); Index: config/gen/cpu/i386/memcpy_sse.c =================================================================== --- config/gen/cpu/i386/memcpy_sse.c (revision 19783) +++ config/gen/cpu/i386/memcpy_sse.c (working copy) @@ -79,7 +79,7 @@ for (i = 0; i < n; ++i) if (d[i] != (i & 0xff)) { printf("error s[%d] = %d d = %d\n", i, s[i], d[i]); - exit(1); + exit(EXIT_FAILURE); } puts("ok"); return 0; Index: config/gen/cpu/i386/memcpy_sse_in.c =================================================================== --- config/gen/cpu/i386/memcpy_sse_in.c (revision 19783) +++ config/gen/cpu/i386/memcpy_sse_in.c (working copy) @@ -64,7 +64,7 @@ for (i = 0; i < n; ++i) if (d[i] != (i & 0xff)) { printf("error s[%d] = %d d = %d\n", i, s[i], d[i]); - exit(1); + exit(EXIT_FAILURE); } puts("ok"); return 0; Index: config/gen/cpu/i386/memcpy_mmx.c =================================================================== --- config/gen/cpu/i386/memcpy_mmx.c (revision 19783) +++ config/gen/cpu/i386/memcpy_mmx.c (working copy) @@ -88,7 +88,7 @@ for (i = 0; i < n; ++i) if (d[i] != (i & 0xff)) { printf("error s[%d] = %d d = %d\n", i, s[i], d[i]); - exit(1); + exit(EXIT_FAILURE); } puts("ok"); return 0; Index: languages/cola/sym.c =================================================================== --- languages/cola/sym.c (revision 19783) +++ languages/cola/sym.c (working copy) @@ -647,7 +647,7 @@ if ((t = lookup_symbol_scope(table, name, scope)) != NULL) { printf("error (line %ld): identifier %s previously declared in this scope, line %d.\n", line, name, t->line); abort(); - exit(0); + exit(EXIT_SUCCESS); } return t; } Index: languages/cola/gen.c =================================================================== --- languages/cola/gen.c (revision 19783) +++ languages/cola/gen.c (working copy) @@ -42,11 +42,11 @@ break; default: printf("Unknown AST statement type [%d].\n", p->asttype); - exit(0); + exit(EXIT_SUCCESS); } else { printf("Unknown AST kind or type at top level.\n"); - exit(0); + exit(EXIT_SUCCESS); } } } @@ -147,7 +147,7 @@ case ASTT_BREAK: if (get_cur_primary_block() == NULL) { printf("break statement not within loop or switch\n"); - exit(0); + exit(EXIT_SUCCESS); } printf("\tgoto %s\n", get_cur_primary_block()->end_label); break; @@ -155,7 +155,7 @@ if ((b = get_cur_primary_block()) == NULL || (b->asttype != ASTT_FOR && b->asttype != ASTT_WHILE)) { printf("continue statement not within a loop\n"); - exit(0); + exit(EXIT_SUCCESS); } if (b->asttype == ASTT_WHILE) printf("\tgoto %s\n", b->start_label); @@ -169,13 +169,13 @@ case ASTT_RETURN: if (cur_method == NULL) { printf("return statement not within a method\n"); - exit(0); + exit(EXIT_SUCCESS); } if (cur_method->sym->type != t_void) { if (p->arg1 == NULL) { printf("ERROR: Method '%s' must return a value.\n", cur_method->sym->name); - exit(0); + exit(EXIT_SUCCESS); } if (!eval_expr(p->arg1)) gen_expr(p->arg1, NULL, cur_method->sym->type); @@ -328,7 +328,7 @@ } printf("#gen_assign: Internal error, unsupported assignment.\n"); - exit(0); + exit(EXIT_SUCCESS); } #if DEBUG @@ -383,7 +383,7 @@ /* Expression has no operands */ if (p->arg1 == NULL && p->arg2 == NULL) { printf("#gen_expr: no operands\n"); - exit(0); + exit(EXIT_SUCCESS); } /* Expression is a method call */ @@ -432,7 +432,7 @@ printf("%s:\n", tl3); if (!p->arg1->targ || !p->arg2->targ) { fprintf(stderr, "Error: ternary conditionals must generate rvalues to be a statement.\n"); - exit(0); + exit(EXIT_SUCCESS); } return; } @@ -459,11 +459,11 @@ #endif if (type2 != t_int32) { fprintf(stderr, "Array subscript expression must be type integer.\n"); - exit(0); + exit(EXIT_SUCCESS); } if (type1 != t_string) { fprintf(stderr, "Index operators not yet implemented for non-string types.\n"); - exit(0); + exit(EXIT_SUCCESS); } if (p->targ == NULL) p->targ = new_temp(type1); @@ -577,7 +577,7 @@ gen_expr(p, NULL, NULL); if (!p->targ) { fprintf(stderr, "Internal compiler error: argument expression didn't generate an rvalue\n"); - exit(0); + exit(EXIT_SUCCESS); } if (p->next) { gen_arg_list_expr(p->next); @@ -597,7 +597,7 @@ printf("%s", NAME(p->targ)); else { fprintf(stderr, "Internal compiler error: argument expression didn't generate an rvalue\n"); - exit(0); + exit(EXIT_SUCCESS); } if (p->next) { printf(", "); @@ -636,7 +636,7 @@ /* If caller wants a return value, method can't be void. */ fprintf(stderr, "ERROR: void function [%s] does not return a value.\n", p->arg1->targ->name); - exit(0); + exit(EXIT_SUCCESS); } } else { @@ -658,12 +658,12 @@ if (!p->Attr.Conditional.condition || p->Attr.Conditional.condition->kind != KIND_EXPR) { fprintf(stderr, "gen_if: Null or invalid CONDITION node\n"); - exit(0); + exit(EXIT_SUCCESS); } if (!p->arg1) { fprintf(stderr, "gen_if: Null THEN node\n"); - exit(0); + exit(EXIT_SUCCESS); } /* If Then Else */ @@ -792,7 +792,7 @@ case ASTT_COMPARISON: if (!p->arg1 || !p->arg2) { printf("#gen_boolean(comparison): Need 2 operands\n"); - exit(0); + exit(EXIT_SUCCESS); } if (!eval_expr(p->arg1)) gen_expr(p->arg1, NULL, NULL); @@ -811,7 +811,7 @@ return; default: printf("#gen_boolean: Unknown boolean AST type(%d).\n", p->arg1->asttype); - exit(0); + exit(EXIT_SUCCESS); } } @@ -827,7 +827,7 @@ *t1 = t_float; else { printf("Can't coerce types (int, %s)\n", type_name(*t2)); - exit(0); + exit(EXIT_SUCCESS); } } else if (*t1 == t_float) { @@ -835,13 +835,13 @@ *t2 = t_float; else { printf("Can't coerce types (float, %s)\n", type_name(*t2)); - exit(0); + exit(EXIT_SUCCESS); } } else { printf("Unsupported type coercion requested (%s, %s).\n", (*t1)->sym->name, (*t2)->sym->name); - exit(0); + exit(EXIT_SUCCESS); } } @@ -880,7 +880,7 @@ case LEFT_SHIFT: return "<<"; case RIGHT_SHIFT: return ">>"; default: printf("Invalid operator %d\n", operator); - exit(0); + exit(EXIT_SUCCESS); } } @@ -894,7 +894,7 @@ case LOGICAL_GTE: return '<'; } printf("op_inverse: Invalid logical operator %d\n", operator); - exit(0); + exit(EXIT_SUCCESS); } char * new_itemp() { Index: languages/cola/type.c =================================================================== --- languages/cola/type.c (revision 19783) +++ languages/cola/type.c (working copy) @@ -173,7 +173,7 @@ t = lookup_symbol(s->name); if (!t) { fprintf(stderr, "Error: identifier [%s] undeclared.\n", s->name); - exit(0); + exit(EXIT_SUCCESS); } if (s != t) { @@ -204,7 +204,7 @@ else { fprintf(stderr, "Error: identifier [%s] has unknown type [%s].\n", s->name, s->typename->name); - exit(0); + exit(EXIT_SUCCESS); } } Index: languages/cola/semant.c =================================================================== --- languages/cola/semant.c (revision 19783) +++ languages/cola/semant.c (working copy) @@ -165,7 +165,7 @@ build_expr(c->arg2); if (c->arg1->type != c->arg2->type) { fprintf(stderr, "Error: expression types not equivalent in ternary expression\n"); - exit(0); + exit(EXIT_SUCCESS); } c->typename = c->arg1->typename; c->type = c->arg1->type; Index: languages/cola/parser.c =================================================================== --- languages/cola/parser.c (revision 19783) +++ languages/cola/parser.c (working copy) @@ -1858,7 +1858,7 @@ Symbol *n, *t, *last = current_namespace; if(lookup_type_symbol((yyvsp[(2) - (2)].sym))) { printf("Error, redefinition of [%s]\n", (yyvsp[(2) - (2)].sym)->name); - exit(0); + exit(EXIT_SUCCESS); } for(n = split(".", (yyvsp[(2) - (2)].sym)->name); n; n = n->tnext) { n->kind = (yyvsp[(2) - (2)].sym)->kind; @@ -2279,7 +2279,7 @@ { (yyval.ast) = NULL; printf("GOTO not supported yet.\n"); - exit(0); + exit(EXIT_SUCCESS); } break; @@ -2352,7 +2352,7 @@ { if((yyvsp[(3) - (9)].ast) == NULL) { printf("for_statement: NULL init statement\n"); - exit(0); + exit(EXIT_SUCCESS); } (yyval.ast) = new_for((yyvsp[(3) - (9)].ast), (yyvsp[(5) - (9)].ast), (yyvsp[(7) - (9)].ast), (yyvsp[(9) - (9)].ast)); } @@ -2530,7 +2530,7 @@ { if((yyvsp[(1) - (4)].ast)->asttype != ASTT_IDENTIFIER) { fprintf(stderr, "Error (line %d), method call must be a simple name or member access.\n", line); - exit(0); + exit(EXIT_SUCCESS); } (yyval.ast) = new_expr(ASTT_METHOD_CALL, (yyvsp[(1) - (4)].ast), (yyvsp[(3) - (4)].ast)); #if DEBUG @@ -2937,12 +2937,12 @@ if(argc > 1) { if(!(yyin = fopen(argv[1], "r"))) { printf( "Error reading source file %s.\n", argv[1] ); - exit(0); + exit(EXIT_SUCCESS); } } else { printf( "No source file specified.\n" ); - exit(0); + exit(EXIT_SUCCESS); } line = 1; @@ -3008,7 +3008,7 @@ */ fprintf(stderr, "(error) line %ld: %s\n", line, s ); fprintf(stderr, "Didn't create output asm.\n" ); - exit(0); + exit(EXIT_SUCCESS); } Index: examples/c/nanoparrot.c =================================================================== --- examples/c/nanoparrot.c (revision 19783) +++ examples/c/nanoparrot.c (working copy) @@ -149,7 +149,7 @@ # define NEXT continue; # define DONE return; # define ENDDISPATCH default : printf("illegal instruction"); \ - exit(1); \ + exit(EXIT_FAILURE) \ }} # else /* CGOTO */ @@ -199,7 +199,7 @@ NEXT CASE(MAX) printf("illegal opcode\n"); - exit(1); + exit(EXIT_FAILURE); NEXT ENDDISPATCH ENDRUN