Strange behaviour when using type(*) and character(*) in GFortran

Thanks, this is an easy hack which should do the trick.

It actually is in the original code.

I don’t use the value, but I need it to check if maybe is unallocated. See your comment here.

A more complete example what I’m trying to do would be this:

implicit none

character(:), allocatable :: not_used
call sub(not_used, "123")
call sub("1", "123")

contains

    subroutine sub(useless_var, print_this)
        class(*), intent(in)      :: useless_var(..)
        character(*), intent(in) :: print_this
        print *, "should be 123: '", print_this, "'"
        print *, "useless_var is unallocated", is_unallocated(useless_var)
    end subroutine sub

    logical function is_unallocated(var)
        class(*), intent(in), optional :: var(..)
        is_unallocated = .not. present(var)
    end function is_unallocated

end

Followup question: Should I use type(*) or class(*) for the is_unallocated function? What’t the difference beside bypassing a GFortran bug?

1 Like