http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55603



             Bug #: 55603

           Summary: Memory leak in intrinsic assignment of allocatable

                    derived type function result

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: fortran

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: dam...@rouson.net





valgrind reports a memory leak in the code below.  FY, this is a greatly

simplified version of the actual use case.  In the intended use case, the "bar"

procedure is type-bound and is invoked via a type-bound generic operator that

appears in a longer expression composed of various user-defined operators.



Damian





$ gfortran --version

GNU Fortran (MacPorts gcc48 4.8-20121202_0) 4.8.0 20121202 (experimental)



$ cat leak.f90

  type foo

  end type

  type(foo) a

  a = bar()

contains

  function bar()

    type(foo), allocatable :: bar

    allocate(bar)

  end function

end

$ gfortran leak.f90

$ valgrind ./a.out

==5151== Memcheck, a memory error detector

==5151== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.

==5151== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info

==5151== Command: ./a.out

==5151==

--5151-- ./a.out:

--5151-- dSYM directory is missing; consider using --dsymutil=yes

==5151==

==5151== HEAP SUMMARY:

==5151==     in use at exit: 1,998 bytes in 33 blocks

==5151==   total heap usage: 49 allocs, 16 frees, 5,706 bytes allocated

==5151==

==5151== LEAK SUMMARY:

==5151==    definitely lost: 1 bytes in 1 blocks

==5151==    indirectly lost: 0 bytes in 0 blocks

==5151==      possibly lost: 0 bytes in 0 blocks

==5151==    still reachable: 1,997 bytes in 32 blocks

==5151==         suppressed: 0 bytes in 0 blocks

==5151== Rerun with --leak-check=full to see details of leaked memory

==5151==

==5151== For counts of detected and suppressed errors, rerun with: -v

==5151== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Reply via email to