The best way to fix the warlock is by giving him one invocation at each level, instead of every other level. That brings him more on par with the rogue, bard, and barbarian (and still behind the primary casters, of course).

Surprising answer, no?