From the point of view of formal English, you are quite correct. It's a mistake.†
But there is another point of view. This is a written representation of colloquial English, where something extraordinarily interesting has been going on for the past century, perhaps longer. (I haven't made a study of the scholarly literature on the subject, where you will find better descriptions and more detailed history; this is just my own observation.)
Use of the historic modal verbs is contracting—tharf disappeared six centuries ago, mote is now restricted to its past form must, shall scrabbles out a meagre living in the law, could/might/should/would are collapsing in sense and are in many respects distinct lexemes from can/may/shall/will. New forms are arising to replace them: be ableda for can, be gonna for will, hafta/hasta/hadta for must.
And as the utility of the historic modals declines, English is reinventing an entire set of inflections that was given up as lost a century ago—the subjunctive. The vernacular seems to be marrying the established contractions ’'ve→’a (representing have) and n’t→’n (representing not) and attaching these to past-form auxiliaries (or to their contractions to ’d) as subjunctive affixes ’a (positive) and ’na (negative).
I wouldna been in jeopardy if you hadna planted that sword.
(With might this is accompanied by assimilation of the /t/ to /d/, mighda/mighdna, and with must the /t/ is elided in the negative, musna.)
This only becomes problematic when you attempt to translate this into formal English. Users naturally expand the contractions they perceive into acceptable formal forms, as if the affixes represented the contractions from which they derive:
I wouldn’t have been ... if you hadn’t have.
But they don’t represent those contractions any more. They have become grammaticalized and have evolved into an independent life-form.
†This should not be (mis)understood as what ideologues are fond of calling ‘prescriptivist’ arbitrariness. Formal English is a distinct dialect, which like all dialects has its own rules, and this construction violates those rules.