Quantcast
Channel: Recent posts
Viewing all articles
Browse latest Browse all 415

Access violation in assignment(=)

$
0
0

Hello,

i got an error with the XE17.1 compiler. The following code produces two different crashes in line 35 (coming from 68), dependend on the type of "vec" in "T_VECTOR". The code worked with the XE16.X compilers.

module M_T_VECTOR
  implicit none

  type :: T_VECTOR
!forrtl: severe (408): fort: (7): Attempt to use pointer ASSIGN_SOURCE when it is not associated with a target
    real :: vec(1:3) = [0.0,0.0,0.0]

!forrtl: severe (157): Program Exception - access violation
!    doubleprecision :: vec(1:3) = [0.0,0.0,0.0]
  contains

    procedure :: assignTo
    generic :: assignment(=) => assignTo
    procedure ::add
    generic :: operator(+) => add

  end type T_VECTOR

  type, extends(T_VECTOR) :: T_VECTOR_EXT

    type(T_VECTOR),  allocatable :: disp(:)
    class(T_VECTOR_EXT), pointer :: pt_a    => null()
    class(T_VECTOR_EXT), pointer :: pt_b(:) => null()

  end type T_VECTOR_EXT

!--------------------------------------------------------
contains

  elemental subroutine assignTo(assign_target, assign_source)
    class(T_VECTOR), intent(inout) :: assign_target
    class(T_VECTOR), intent(in   ) :: assign_source

! Exception thrown here
    assign_target%vec = assign_source%vec

  end subroutine

  elemental function add(lhs, rhs) result(ergebnis)
    class(T_VECTOR), intent(in   ) :: lhs, rhs
    type(T_VECTOR)                 :: ergebnis

    ergebnis%vec = lhs%vec + rhs%vec
  end function

end module M_T_VECTOR

!========================================================

program main
  use M_T_VECTOR
  implicit none

  type(T_VECTOR_EXT), target :: a,b(2)

  a%pt_b => b
  a%pt_a => a

  allocate(a%disp(2))
  allocate(b(1)%disp(2))
  allocate(b(2)%disp(2))

  !This works
  a%pt_a%disp(1) = a%pt_a%disp(1) + a%pt_b(1)%disp(1)
  a%pt_a%disp(2) = a%pt_a%disp(2) + a%pt_b(1)%disp(2)

  !This crashes
  a%pt_a%disp(:) = a%pt_a%disp(:) + a%pt_b(1)%disp(:)

end program

Greetings

Wolf


Viewing all articles
Browse latest Browse all 415

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>