diff options
Diffstat (limited to 'contrib/libf2c/libI77/rdfmt.c')
-rw-r--r-- | contrib/libf2c/libI77/rdfmt.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/contrib/libf2c/libI77/rdfmt.c b/contrib/libf2c/libI77/rdfmt.c index 08ff0e8..f2b1211 100644 --- a/contrib/libf2c/libI77/rdfmt.c +++ b/contrib/libf2c/libI77/rdfmt.c @@ -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') |