OpenGL, ну идея понятна. Благодаря беседе я у себя недочет нашел. Соответственно он и в твоем коде. Забыл про cleanup соединения. Так что еще класс лепить нужно.
Во-первых, если там указатели, то можно просто воспользоваться unique_ptr/shared_ptr (так из примера OpenGL можно убрать Session и заменить на умный указатель).
Во-вторых, еще раз, такой класс-обертку ты напишешь один раз, а использовать его можно много где (в отличие от goto, который придется писать в каждой подобной функции) и везде твой код (самой функции) станет чище и проще.