Concettualmente quel codice e` un po` "sporco". Se passi un array piu` grande del necessario il programma non funziona! Non ha molto senso..

Piuttosto - accusando la limitatezza di Java in questo caso - l`array fusione lo allocherei dentro la funzione e lo restituirei come risultato. Ti indico il prototipo, rifalla cosi`:

codice:
static int[] fondi( int[] uno, int[] due )
E in main() la utilizzerai cosi`:

codice:
public static void main(String[]args)
{
	int[] primo = {3,4,21,45,67,89,98,123};
	int[] sec = {0,3,13,34,56,234};
	int[] fusione = fondi(primo, sec);

	for (int i = 0; i < fusione.length; i++)
		System.out.print(fusione[i] + "\t");
}
Cosi` l`utente non dovra` preoccuparsi assolutamente dell`allocazione e non ti ritroverai a combattere con l`errore di prima.

Ciao.