Access violation error on Metis 5.0.2 called from Fortran

I've been tracking an access violation error when calling METIS_PartMeshDual routine from a Fortran program. Here's what I have:

-- Visual Studio 2010
-- Intel Fortran compiler 12

everything compiles fine and links by using the following interface:

! Fortran to C calling conventions and interface
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MODULE libmetis
INTERFACE
SUBROUTINE METIS_PartMeshDual ( ne , &
nn , &
eptr , &
eind , &
vwgt , &
vsize , &
ncommon, &
nparts , &
tpwgts , &
options, &
objval , &
epart , &
npart )
!DEC$ ATTRIBUTES C :: METIS_PartMeshDual
!DEC$ ATTRIBUTES REFERENCE :: ne
!DEC$ ATTRIBUTES REFERENCE :: nn
!DEC$ ATTRIBUTES REFERENCE :: eptr
!DEC$ ATTRIBUTES REFERENCE :: eind
!DEC$ ATTRIBUTES VALUE :: vwgt
!DEC$ ATTRIBUTES VALUE :: vsize
!DEC$ ATTRIBUTES REFERENCE :: ncommon
!DEC$ ATTRIBUTES REFERENCE :: nparts
!DEC$ ATTRIBUTES VALUE :: tpwgts
!DEC$ ATTRIBUTES REFERENCE :: options
!DEC$ ATTRIBUTES REFERENCE :: objval
!DEC$ ATTRIBUTES REFERENCE :: epart
!DEC$ ATTRIBUTES REFERENCE :: npart
INTEGER :: ne, nn, eptr(ne+1), eind(ne*4), ncommon, nparts, options(17), objval, epart(ne), npart(nn)
integer :: vwgt
integer :: vsize
REAL(4) :: tpwgts
END SUBROUTINE METIS_PartMeshDual
END INTERFACE
END MODULE

! Piece of code calling the METIS_PartMeshDual routine (some parts were ommitted for simplicity)
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

!...
integer, allocatable :: eptr(:), eind(:)
integer :: i, j
integer :: options(17)
integer, parameter :: &
METIS_OPTION_PTYPE = 1, &
METIS_OPTION_OBJTYPE = 2, &
METIS_OPTION_CTYPE = 3, &
METIS_OPTION_IPTYPE = 4, &
METIS_OPTION_RTYPE = 5, &
METIS_OPTION_DBGLVL = 6, &
METIS_OPTION_NITER = 7, &
METIS_OPTION_NCUTS = 8, &
METIS_OPTION_SEED = 9, &
METIS_OPTION_MINCONN = 10, &
METIS_OPTION_CONTIG = 11, &
METIS_OPTION_COMPRESS = 12, &
METIS_OPTION_CCORDER = 13, &
METIS_OPTION_PFACTOR = 14, &
METIS_OPTION_NSEPS = 15, &
METIS_OPTION_UFACTOR = 16, &
METIS_OPTION_NUMBERING = 17
!...
options(:) = -1

! Setting the Fortran numbering scheme
options(METIS_OPTION_NUMBERING) = 1

call METIS_PartMeshDual( nel , &
nnos , &
eptr , &
ien , &
null() , & ! vwgt
null() , & ! vsize
3 , & ! ncommon
nprocs , &
null() , & ! tpwgts, &
options, & ! options, &
ncutedg, &
iel_p , &
ino_p )

I can track the calling sequence from the Visual Studio debugger. It seems that Metis is applying Fortran To C numbering conversion twice in the following lines:

First conversion:

File meshpart.c, line 107, code:

/* renumber the mesh */
if (options && options[METIS_OPTION_NUMBERING] == 1) {
ChangeMesh2CNumbering(*ne, eptr, eind);
renumber = 1;
}

The next step is Mesh to Dual Graph conversion. It's successfully done by METIS_MeshToDual;

Stepping into METIS_PartGraphRecursive (file pmetis.c, starting at line 91), the Fortran to C numbering conversion is called again, at line 118, to convert the xadj and adjncy arrays returned by the Mesh to Dual Graph routine (which is already working with C numbering scheme). Here is the portion of the code:

Second conversion:

/* if required, change the numbering to 0 */
if (ctrl->numflag == 1) {
Change2CNumbering(*nvtxs, xadj, adjncy);
renumber = 1;
}

After this section, xadj has -1 in the first position and the library crashes at line 721, file coarsen.c, routine CreateCoarseGraphNoMask:

istart = xadj[v];
iend = xadj[v+1];
for (j=istart; j