Skip to content

Commit b944dbc

Browse files
committed
Do not fail if requested variable does not exist
Fixed #1 #6
1 parent fdf189c commit b944dbc

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

c/helloworld.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,21 @@ int SimpleStringFull(char *command, double* result) {
101101
int SimpleString(char *command, char *resultVar, char* result) {
102102
PyRun_SimpleString(command);
103103

104-
PyObject *var = PyObject_GetAttrString(mainModule, resultVar);
104+
int exists = PyObject_HasAttrString(mainModule, resultVar);
105105

106-
//PyObject* varStr = PyObject_Repr(var);
107-
PyObject* varStr = PyObject_Str(var);
108-
char* str = PyUnicode_AsUTF8(varStr);
106+
if (exists == 1) {
107+
PyObject *var = PyObject_GetAttrString(mainModule, resultVar);
109108

110-
sprintf(result, "%s", str);
109+
//PyObject* varStr = PyObject_Repr(var);
110+
PyObject* varStr = PyObject_Str(var);
111+
char* str = PyUnicode_AsUTF8(varStr);
112+
113+
sprintf(result, "%s", str);
114+
115+
Py_DECREF(varStr);
116+
Py_DECREF(var);
117+
}
111118

112-
Py_DECREF(varStr);
113-
Py_DECREF(var);
114119
return ZF_SUCCESS;
115120
}
116121

@@ -126,7 +131,7 @@ int main(int argc, char **argv) {
126131
char* result = malloc(sizeof(char) * 1024);
127132

128133
Initialize();
129-
SimpleString("x=2", "x", result);
134+
SimpleString("x=2", "y", result);
130135
Finalize();
131136

132137
printf(result);

0 commit comments

Comments
 (0)