OSDN Git Service

PR libfortran/35524
[pf3gnuchains/gcc-fork.git] / libgfortran / intrinsics / associated.c
index ac10d7c..0d32fd7 100644 (file)
@@ -30,15 +30,16 @@ Boston, MA 02110-1301, USA.  */
 
 #include "libgfortran.h"
 
-extern GFC_LOGICAL_4 associated (const gfc_array_void *,
-                                const gfc_array_void *);
+extern int associated (const gfc_array_void *, const gfc_array_void *);
 export_proto(associated);
 
-GFC_LOGICAL_4
+int
 associated (const gfc_array_void *pointer, const gfc_array_void *target)
 {
   int n, rank;
 
+  if (GFC_DESCRIPTOR_DATA (pointer) == NULL)
+    return 0;
   if (GFC_DESCRIPTOR_DATA (pointer) != GFC_DESCRIPTOR_DATA (target))
     return 0;
   if (GFC_DESCRIPTOR_DTYPE (pointer) != GFC_DESCRIPTOR_DTYPE (target))
@@ -52,6 +53,8 @@ associated (const gfc_array_void *pointer, const gfc_array_void *target)
       if ((pointer->dim[n].ubound - pointer->dim[n].lbound)
           != (target->dim[n].ubound - target->dim[n].lbound))
         return 0;
+      if (pointer->dim[n].ubound < pointer->dim[n].lbound)
+       return 0;
     }
 
   return 1;