Be gentle with yourself.
You get to stay with him as long as you choose to.
You don't ever have to leave.
Consider reminding yourself when he does all those yucky things that he is an addict and you can count on him to behave that way.
Then take your energy off of analyzing him and ask yourself (with love) what YOU want and what YOU deserve. How can you take care of you to bring peace and serenity to YOUR life.
I hope you care for you through all this.
Peace