X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libgfortran%2Fintrinsics%2Fassociated.c;h=0d32fd7d002b3a4ddd94822b23511a28cc99c121;hb=fe8a5771fd01d830a4c7dc9aeac2069709fbbdef;hp=ac10d7ce7fecd33f41037ce42e8a4f95bb3543bb;hpb=5ac2525b9ad42e99878e993961c920d878cd245b;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libgfortran/intrinsics/associated.c b/libgfortran/intrinsics/associated.c index ac10d7ce7fe..0d32fd7d002 100644 --- a/libgfortran/intrinsics/associated.c +++ b/libgfortran/intrinsics/associated.c @@ -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;