some minor fixes

This commit is contained in:
ceriel 1987-10-14 12:34:47 +00:00
parent 11e1b3ce15
commit fc6a8c5aa8
3 changed files with 7 additions and 3 deletions

View file

@ -422,7 +422,7 @@ MkSet(size)
{
register arith *s;
size += sizeof(arith);
size = ((size + (int)word_size - 1) / (int)word_size + 1) * sizeof(arith);
s = (arith *) Malloc(size);
clear((char *) s , size);
s++;
@ -433,6 +433,7 @@ MkSet(size)
FreeSet(s)
register arith *s;
{
dec_refcount(s);
if (refcount(s) <= 0) {
free((char *) (s-1));
}
@ -482,7 +483,7 @@ ChkSet(expp)
First allocate room for the set.
*/
expp->nd_set = MkSet((unsigned)(tp->tp_size) * (sizeof(arith) / (int) word_size));
expp->nd_set = MkSet((unsigned)(tp->tp_size));
/* Now check the elements, one by one
*/

View file

@ -20,4 +20,5 @@ extern int (*DesigChkTable[])(); /* table of designator checking
#define ChkDesignator(expp) ((*DesigChkTable[(expp)->nd_class])(expp))
#define inc_refcount(s) (*((s) - 1) += 1)
#define dec_refcount(s) (*((s) - 1) -= 1)
#define refcount(s) (*((s) - 1))

View file

@ -360,10 +360,12 @@ CheckWithDef(df, tp)
possible earlier definition in the definition module.
*/
if (df->df_type) {
if (df->df_kind == D_PROCHEAD && df->df_type != error_type) {
/* We already saw a definition of this type
in the definition module.
*/
assert(df->df_type != 0);
if (!TstProcEquiv(tp, df->df_type)) {
error("inconsistent procedure declaration for \"%s\"",
df->df_idf->id_text);