rdfmt.c (rd_L): Use if-then-else instead of case statement to solve problems when...
authorHerman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
Sun, 11 Jun 2000 19:39:55 +0000 (21:39 +0200)
committerToon Moene <toon@gcc.gnu.org>
Sun, 11 Jun 2000 19:39:55 +0000 (19:39 +0000)
2000-06-11  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

* rdfmt.c (rd_L): Use if-then-else instead of case statement to
solve problems when sizeof(char) == sizeof(short).

From-SVN: r34494

libf2c/ChangeLog
libf2c/libI77/rdfmt.c

index 6d0e6db..2c734c6 100644 (file)
@@ -1,3 +1,8 @@
+2000-06-11  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>
+
+       * rdfmt.c (rd_L): Use if-then-else instead of case statement to
+       solve problems when sizeof(char) == sizeof(short).
+
 2000-05-18  Chris Demetriou  <cgd@sibyte.com>
 
        * configure.in: Test for __g77_integer, __g77_uinteger,
index 08ff0e8..f2b1211 100644 (file)
@@ -208,11 +208,15 @@ rd_L(ftnint *n, int w, ftnlen len)
          case '\n':
                return errno = 116;
                }
-       switch(len) {
-               case sizeof(char):      *(char *)n = (char)lv;   break;
-               case sizeof(short):     *(short *)n = (short)lv; break;
-               default:                *n = lv;
-               }
+       /* The switch statement that was here
+          didn't cut it:  It broke down for targets
+          where sizeof(char) == sizeof(short). */
+       if (len == sizeof(char))
+               *(char *)n = (char)lv;
+       else if (len == sizeof(short))
+               *(short *)n = (short)lv;
+       else
+               *n = lv;
        while(w-- > 0) {
                GET(ch);
                if (ch == ',' || ch == '\n')