The part of the function that handles p.value is:
if (p.value < 1) {
sig <- adj.p.val[o] <= p.value
sig[is.na(sig)] <- FALSE
tab <- tab[sig, ]
}
I think it works as intended if it is adjusted to:
if (p.value < 1) {
sig <- tab$PValue <= p.value
sig[is.na(sig)] <- FALSE
tab <- tab[sig, ]
}