diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2017-01-03 20:01:30 +0200 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2017-01-03 20:01:30 +0200 |
commit | 84aff3c2d4b487fe93f5caa6351c47d56145a6a1 (patch) | |
tree | 09d627d26346335c50d501ba2f2e2f39094071bc /libgfortran/intrinsics | |
parent | 47f2abdd0d8bc3a760041149a93e35bc5db9d54e (diff) |
PR 78534 Revert r244011
r244011 caused regressions on 32-bit hosts.
From-SVN: r244027
Diffstat (limited to 'libgfortran/intrinsics')
-rw-r--r-- | libgfortran/intrinsics/args.c | 10 | ||||
-rw-r--r-- | libgfortran/intrinsics/chmod.c | 3 | ||||
-rw-r--r-- | libgfortran/intrinsics/env.c | 3 | ||||
-rw-r--r-- | libgfortran/intrinsics/extends_type_of.c | 2 | ||||
-rw-r--r-- | libgfortran/intrinsics/gerror.c | 2 | ||||
-rw-r--r-- | libgfortran/intrinsics/getlog.c | 3 | ||||
-rw-r--r-- | libgfortran/intrinsics/hostnm.c | 5 | ||||
-rw-r--r-- | libgfortran/intrinsics/string_intrinsics_inc.c | 17 |
8 files changed, 23 insertions, 22 deletions
diff --git a/libgfortran/intrinsics/args.c b/libgfortran/intrinsics/args.c index ded5a35f415..c07181f3113 100644 --- a/libgfortran/intrinsics/args.c +++ b/libgfortran/intrinsics/args.c @@ -37,6 +37,7 @@ void getarg_i4 (GFC_INTEGER_4 *pos, char *val, gfc_charlen_type val_len) { int argc; + int arglen; char **argv; get_args (&argc, &argv); @@ -48,7 +49,7 @@ getarg_i4 (GFC_INTEGER_4 *pos, char *val, gfc_charlen_type val_len) if ((*pos) + 1 <= argc && *pos >=0 ) { - gfc_charlen_type arglen = strlen (argv[*pos]); + arglen = strlen (argv[*pos]); if (arglen > val_len) arglen = val_len; memcpy (val, argv[*pos], arglen); @@ -118,8 +119,7 @@ get_command_argument_i4 (GFC_INTEGER_4 *number, char *value, GFC_INTEGER_4 *length, GFC_INTEGER_4 *status, gfc_charlen_type value_len) { - int argc, stat_flag = GFC_GC_SUCCESS; - gfc_charlen_type arglen = 0; + int argc, arglen = 0, stat_flag = GFC_GC_SUCCESS; char **argv; if (number == NULL ) @@ -195,10 +195,10 @@ void get_command_i4 (char *command, GFC_INTEGER_4 *length, GFC_INTEGER_4 *status, gfc_charlen_type command_len) { - int i, argc, thisarg; + int i, argc, arglen, thisarg; int stat_flag = GFC_GC_SUCCESS; + int tot_len = 0; char **argv; - gfc_charlen_type arglen, tot_len = 0; if (command == NULL && length == NULL && status == NULL) return; /* No need to do anything. */ diff --git a/libgfortran/intrinsics/chmod.c b/libgfortran/intrinsics/chmod.c index 4e917a1c7f4..d08418d773f 100644 --- a/libgfortran/intrinsics/chmod.c +++ b/libgfortran/intrinsics/chmod.c @@ -64,6 +64,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see static int chmod_internal (char *file, char *mode, gfc_charlen_type mode_len) { + int i; bool ugo[3]; bool rwxXstugo[9]; int set_mode, part; @@ -103,7 +104,7 @@ chmod_internal (char *file, char *mode, gfc_charlen_type mode_len) honor_umask = false; #endif - for (gfc_charlen_type i = 0; i < mode_len; i++) + for (i = 0; i < mode_len; i++) { if (!continue_clause) { diff --git a/libgfortran/intrinsics/env.c b/libgfortran/intrinsics/env.c index f8e77584c26..f8e376e9dfe 100644 --- a/libgfortran/intrinsics/env.c +++ b/libgfortran/intrinsics/env.c @@ -93,8 +93,7 @@ get_environment_variable_i4 (char *name, char *value, GFC_INTEGER_4 *length, gfc_charlen_type name_len, gfc_charlen_type value_len) { - int stat = GFC_SUCCESS; - gfc_charlen_type res_len = 0; + int stat = GFC_SUCCESS, res_len = 0; char *name_nt; char *res; diff --git a/libgfortran/intrinsics/extends_type_of.c b/libgfortran/intrinsics/extends_type_of.c index 8dc9ef85e22..8177e0eefeb 100644 --- a/libgfortran/intrinsics/extends_type_of.c +++ b/libgfortran/intrinsics/extends_type_of.c @@ -30,7 +30,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see typedef struct vtype { GFC_INTEGER_4 hash; - size_t size; + GFC_INTEGER_4 size; struct vtype *extends; } vtype; diff --git a/libgfortran/intrinsics/gerror.c b/libgfortran/intrinsics/gerror.c index 51432a4d010..34ea1dfb73f 100644 --- a/libgfortran/intrinsics/gerror.c +++ b/libgfortran/intrinsics/gerror.c @@ -39,7 +39,7 @@ export_proto_np(PREFIX(gerror)); void PREFIX(gerror) (char * msg, gfc_charlen_type msg_len) { - gfc_charlen_type p_len; + int p_len; char *p; p = gf_strerror (errno, msg, msg_len); diff --git a/libgfortran/intrinsics/getlog.c b/libgfortran/intrinsics/getlog.c index 33ad52e470f..a856cd1eee8 100644 --- a/libgfortran/intrinsics/getlog.c +++ b/libgfortran/intrinsics/getlog.c @@ -70,6 +70,7 @@ export_proto_np(PREFIX(getlog)); void PREFIX(getlog) (char * login, gfc_charlen_type login_len) { + int p_len; char *p; memset (login, ' ', login_len); /* Blank the string. */ @@ -106,7 +107,7 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len) if (p == NULL) goto cleanup; - gfc_charlen_type p_len = strlen (p); + p_len = strlen (p); if (login_len < p_len) p_len = login_len; memcpy (login, p, p_len); diff --git a/libgfortran/intrinsics/hostnm.c b/libgfortran/intrinsics/hostnm.c index 2395067eae1..2ccb5bdb371 100644 --- a/libgfortran/intrinsics/hostnm.c +++ b/libgfortran/intrinsics/hostnm.c @@ -88,8 +88,8 @@ w32_gethostname (char *name, size_t len) static int hostnm_0 (char *name, gfc_charlen_type name_len) { + int val, i; char p[HOST_NAME_MAX + 1]; - int val; memset (name, ' ', name_len); @@ -99,7 +99,8 @@ hostnm_0 (char *name, gfc_charlen_type name_len) if (val == 0) { - for (gfc_charlen_type i = 0; i < name_len && p[i] != '\0'; i++) + i = -1; + while (i < name_len && p[++i] != '\0') name[i] = p[i]; } diff --git a/libgfortran/intrinsics/string_intrinsics_inc.c b/libgfortran/intrinsics/string_intrinsics_inc.c index 0da5130b653..f514f4c6a3e 100644 --- a/libgfortran/intrinsics/string_intrinsics_inc.c +++ b/libgfortran/intrinsics/string_intrinsics_inc.c @@ -224,15 +224,14 @@ string_len_trim (gfc_charlen_type len, const CHARTYPE *s) break; } } + + /* Now continue for the last characters with naive approach below. */ + assert (i >= 0); } /* Simply look for the first non-blank character. */ - while (s[i] == ' ') - { - if (i == 0) - return 0; - --i; - } + while (i >= 0 && s[i] == ' ') + --i; return i + 1; } @@ -328,12 +327,12 @@ string_scan (gfc_charlen_type slen, const CHARTYPE *str, if (back) { - for (i = slen; i != 0; i--) + for (i = slen - 1; i >= 0; i--) { for (j = 0; j < setlen; j++) { - if (str[i - 1] == set[j]) - return i; + if (str[i] == set[j]) + return (i + 1); } } } |