From: ceriel Date: Mon, 20 Feb 1989 18:01:33 +0000 (+0000) Subject: some fixes: calloc was wrong; catch traps, and let divides X-Git-Tag: release-5-5~2567 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=30959cd73fe25972d4cb24d402019ab96c50bc09;p=ack.git some fixes: calloc was wrong; catch traps, and let divides by 0 generate a signal, if on a unix machine --- diff --git a/lang/cem/libcc/gen/calloc.c b/lang/cem/libcc/gen/calloc.c index 23262d49e..a63e3f27c 100644 --- a/lang/cem/libcc/gen/calloc.c +++ b/lang/cem/libcc/gen/calloc.c @@ -1,5 +1,5 @@ /* $Header$ */ -#define ALIGN(sz) (((sz) + (sizeof(long) - 1) / sizeof(long)) * sizeof(long)) +#define ALIGN(sz) ((((sz) + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long)) char * calloc(nelem, elsize) unsigned int nelem, elsize; diff --git a/lang/cem/libcc/gen/head_cc.e b/lang/cem/libcc/gen/head_cc.e index 44f06dc3c..e1e9c17fd 100644 --- a/lang/cem/libcc/gen/head_cc.e +++ b/lang/cem/libcc/gen/head_cc.e @@ -1,4 +1,5 @@ # +#include "em_abs.h" /* * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands. * @@ -43,6 +44,11 @@ _penvp loi EM_PSIZE lae _penvp sti EM_PSIZE +#if unix && ! (em22 || em24 || em44) + lpi $_ctch_ + sig + asp EM_PSIZE +#endif lal EM_WSIZE+EM_PSIZE loi EM_PSIZE lal EM_WSIZE @@ -54,3 +60,31 @@ _penvp lfr EM_WSIZE cal $exit end + +#if unix && ! (em22 || em24 || em44) + exp $_ctch_ + pro $_ctch_,0 + lol 0 + loc EIDIVZ + beq *1 + lol 0 + loc EFDIVZ + beq *1 + bra *2 +2 + lol 0 + trp + bra *3 +1 + loc 8 + cal $getpid + lfr EM_WSIZE + cal $kill + asp 2*EM_WSIZE +3 + lpi $_ctch_ + sig + asp EM_WSIZE + rtt + end 0 +#endif diff --git a/lang/cem/libcc/gen/rename.c b/lang/cem/libcc/gen/rename.c new file mode 100644 index 000000000..f703e45f8 --- /dev/null +++ b/lang/cem/libcc/gen/rename.c @@ -0,0 +1,9 @@ +int +rename(from, to) + char *from, *to; +{ + (void) unlink(to); + if (link(from, to) < 0) return -1; + (void) unlink(from); + return 0; +}