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 41  
42 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 45 const char *id = "";
57 46  
58 47 if (!PyArg_ParseTuple(args, "s", &id)) {
... ... @@ -63,15 +52,25 @@ int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) {
63 52  
64 53 try {
65 54  
66   - self->session = PW3270_NAMESPACE::session::create(id);
  55 + session = PW3270_NAMESPACE::session::create(id);
67 56  
68 57 } catch(std::exception &e) {
69 58  
70 59 trace("%s failed: %s",__FUNCTION__,e.what());
71 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 75 return 0;
77 76  
... ...