Commit cf371929657dba4d54fd7c801dfe691f23477831

Authored by Perry Werneck
1 parent ff3908b9

Melhorando tratamento de excessões na criação do objeto.

Showing 1 changed file with 12 additions and 13 deletions   Show diff stats
src/python/init.cc
@@ -41,18 +41,7 @@ @@ -41,18 +41,7 @@
41 41
42 PyObject * terminal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { 42 PyObject * terminal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) {
43 43
44 - pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0);  
45 -  
46 - trace("%s: self=%p",__FUNCTION__,self);  
47 -  
48 - self->session = NULL;  
49 -  
50 - return (PyObject *)self;  
51 -}  
52 -  
53 -  
54 -int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) {  
55 - 44 + PW3270_NAMESPACE::session * session;
56 const char *id = ""; 45 const char *id = "";
57 46
58 if (!PyArg_ParseTuple(args, "s", &id)) { 47 if (!PyArg_ParseTuple(args, "s", &id)) {
@@ -63,15 +52,25 @@ int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { @@ -63,15 +52,25 @@ int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) {
63 52
64 try { 53 try {
65 54
66 - self->session = PW3270_NAMESPACE::session::create(id); 55 + session = PW3270_NAMESPACE::session::create(id);
67 56
68 } catch(std::exception &e) { 57 } catch(std::exception &e) {
69 58
70 trace("%s failed: %s",__FUNCTION__,e.what()); 59 trace("%s failed: %s",__FUNCTION__,e.what());
71 PyErr_SetString(terminalError, e.what()); 60 PyErr_SetString(terminalError, e.what());
  61 + return NULL;
72 62
73 } 63 }
74 64
  65 + pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0);
  66 +
  67 + self->session = session;
  68 +
  69 + return (PyObject *)self;
  70 +}
  71 +
  72 +
  73 +int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) {
75 74
76 return 0; 75 return 0;
77 76