* real.c (PUT_REAL) [XFmode]: Zero the balance of the structure.
authorDonn Terry <donn@interix.com>
Mon, 8 Feb 1999 11:40:32 +0000 (11:40 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 8 Feb 1999 11:40:32 +0000 (03:40 -0800)
From-SVN: r25081

gcc/ChangeLog
gcc/real.c

index a20fbad6a63a8ed8572679f4d96d65abcc1ab884..78f04ed3496c2a37a8bf49dd6fc2df372a6cf711 100644 (file)
@@ -1,3 +1,7 @@
+Mon Feb  8 11:43:07 1999  Donn Terry <donn@interix.com>
+
+       * real.c (PUT_REAL) [XFmode]: Zero the balance of the structure.
+
 Mon Feb  8 11:37:24 1999  Marc Espie (espie@cvs.openbsd.org)
 
        * m88k/t-luna-gas: Remove bash dependency.
index 631bee018074c6540d91004742f93b823d0b36a4..3a3f4be50ba525e3e8c68b6e39253010b99e4cb9 100644 (file)
@@ -248,7 +248,12 @@ unknown arithmetic type
 #define MAXDECEXP 4932
 #define MINDECEXP -4956
 #define GET_REAL(r,e) bcopy ((char *) r, (char *) e, 2*NE)
-#define PUT_REAL(e,r) bcopy ((char *) e, (char *) r, 2*NE)
+#define PUT_REAL(e,r)                          \
+do {                                           \
+  if (2*NE < sizeof(*r))                       \
+    bzero((char *)r, sizeof(*r));              \
+  bcopy ((char *) e, (char *) r, 2*NE);                \
+} while (0)
 #else /* no XFmode */
 #if LONG_DOUBLE_TYPE_SIZE == 128
 #define NE 10