Always offer to smoke him out. And then before you leave, always ask if he needs some to get him by --"Did you snag a bud for yourself? Or should I leave you one?"
Kinda use the reverse psychology on him and make him feel guilty and greatfull for you all at the same time. If that doesnt work; then it is time for a confrontation. It is O.K. to argue once in awhile; but once it gets to the point of a shouting match, it's time to leave for awhile. Come back later when you can finish your arguement without yelling.