Actual source code: ex66f.F90
1: !
2: ! Demonstrates PetscObjectNullify()
3: !
4: #include <petsc/finclude/petscvec.h>
5: use petscvec
6: implicit none
8: PetscErrorCode ierr
9: Vec x, y
11: PetscCallA(PetscInitialize(ierr))
13: PetscCallA(VecCreateMPI(PETSC_COMM_WORLD, 1_PETSC_INT_KIND, PETSC_DETERMINE, x, ierr))
14: y = x
15: PetscCallA(VecDestroy(x, ierr))
16: if (.not. PetscObjectIsNull(y)) then
17: print *, "y appears to be a valid object when it is not because x has been destroyed"
18: end if
19: PetscObjectNullify(y)
20: ! Using y = PETSC_NULL_VEC would cause a crash in VecCreateMPI()
21: PetscCallA(VecCreateMPI(PETSC_COMM_WORLD, 1_PETSC_INT_KIND, PETSC_DETERMINE, y, ierr))
22: PetscCallA(VecDestroy(y, ierr))
23: PetscCallA(PetscFinalize(ierr))
24: end
26: !/*TEST
27: !
28: ! test:
29: ! nsize: 1
30: !
31: !TEST*/