From cf371929657dba4d54fd7c801dfe691f23477831 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Sat, 31 Oct 2015 14:44:08 -0200 Subject: [PATCH] Melhorando tratamento de excessões na criação do objeto. --- src/python/init.cc | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/python/init.cc b/src/python/init.cc index aacd4fe..34b9662 100644 --- a/src/python/init.cc +++ b/src/python/init.cc @@ -41,18 +41,7 @@ PyObject * terminal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0); - - trace("%s: self=%p",__FUNCTION__,self); - - self->session = NULL; - - return (PyObject *)self; -} - - -int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { - + PW3270_NAMESPACE::session * session; const char *id = ""; if (!PyArg_ParseTuple(args, "s", &id)) { @@ -63,15 +52,25 @@ int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { try { - self->session = PW3270_NAMESPACE::session::create(id); + session = PW3270_NAMESPACE::session::create(id); } catch(std::exception &e) { trace("%s failed: %s",__FUNCTION__,e.what()); PyErr_SetString(terminalError, e.what()); + return NULL; } + pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0); + + self->session = session; + + return (PyObject *)self; +} + + +int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { return 0; -- libgit2 0.21.2