From 47c7e6a43d96b0350a6bd70cdfd20bb2bd824626 Mon Sep 17 00:00:00 2001 From: ceriel Date: Tue, 21 Apr 1992 09:54:32 +0000 Subject: [PATCH] Fixed bug in initalization expression handling --- lang/cem/cemcom.ansi/arith.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lang/cem/cemcom.ansi/arith.c b/lang/cem/cemcom.ansi/arith.c index f450e3656..9ade7d5d9 100644 --- a/lang/cem/cemcom.ansi/arith.c +++ b/lang/cem/cemcom.ansi/arith.c @@ -72,11 +72,18 @@ arithbalance(e1p, oper, e2p) /* 3.1.2.5 */ */ /* ??? t1 == LNGDBL, t2 == DOUBLE */ if (t1 == LNGDBL) { - if (t2 != LNGDBL) + if (t2 != LNGDBL) { + if (t2 == DOUBLE || t2 == FLOAT) + float2float(e2p, lngdbl_type); + else int2float(e2p, lngdbl_type); + } return; } else if (t2 == LNGDBL) { if (t1 != LNGDBL) + if (t1 == DOUBLE || t1 == FLOAT) + float2float(e1p, lngdbl_type); + else int2float(e1p, lngdbl_type); return; } @@ -85,11 +92,15 @@ arithbalance(e1p, oper, e2p) /* 3.1.2.5 */ is converted to double. */ if (t1 == DOUBLE) { - if (t2 != DOUBLE) + if (t2 == FLOAT) + float2float(e2p, double_type); + else if (t2 != DOUBLE) int2float(e2p, double_type); return; } else if (t2 == DOUBLE) { - if (t1 != DOUBLE) + if (t1 == FLOAT) + float2float(e1p, double_type); + else if (t1 != DOUBLE) int2float(e1p, double_type); return; }