make a backup of your wallet.dat
delete everything in the folder where it was
run latest qt
wait for new chain
close client when new chain full
move backup wallet over the one that the qt just created
launch qt with --salvagewallet option
just doing the --salvagewallet option won't do it. It's probably something in chainstate that needs killed, but it's easier to just wipe the whole folder and MAKE SURE YOUR BACKUP IS NOT IN THERE WHEN YOU WIPE IT!