summaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2017-01-03 20:01:30 +0200
committerJanne Blomqvist <jb@gcc.gnu.org>2017-01-03 20:01:30 +0200
commit84aff3c2d4b487fe93f5caa6351c47d56145a6a1 (patch)
tree09d627d26346335c50d501ba2f2e2f39094071bc /libgfortran/intrinsics
parent47f2abdd0d8bc3a760041149a93e35bc5db9d54e (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.c10
-rw-r--r--libgfortran/intrinsics/chmod.c3
-rw-r--r--libgfortran/intrinsics/env.c3
-rw-r--r--libgfortran/intrinsics/extends_type_of.c2
-rw-r--r--libgfortran/intrinsics/gerror.c2
-rw-r--r--libgfortran/intrinsics/getlog.c3
-rw-r--r--libgfortran/intrinsics/hostnm.c5
-rw-r--r--libgfortran/intrinsics/string_intrinsics_inc.c17
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);
}
}
}