diff_solver() is virtual; treat it as such

Not sure how this bug survived as long as it did, but Vikram managed to trigger it and for him this patch manages to fix it.