提交 6cc74022 authored 作者: James Bergstra's avatar James Bergstra

CLinker - no outputs or updates with error on play

上级 8bfbbedf
...@@ -778,30 +778,31 @@ CLazyLinker_call(PyObject *_self, PyObject *args, PyObject *kwds) ...@@ -778,30 +778,31 @@ CLazyLinker_call(PyObject *_self, PyObject *args, PyObject *kwds)
err = lazy_rec_eval(self, self->output_vars[i], one, zero); err = lazy_rec_eval(self, self->output_vars[i], one, zero);
} }
// save references to outputs prior to updating storage containers if (!err)
if ((call_i + 1) == n_calls)
{ {
assert (self->n_output_vars > self->n_updates); // save references to outputs prior to updating storage containers
Py_DECREF(rval); if ((call_i + 1) == n_calls)
rval = PyList_New(self->n_output_vars);
for (int i = 0; i < (self->n_output_vars); ++i)
{ {
Py_ssize_t src = self->output_vars[i]; assert (self->n_output_vars > self->n_updates);
PyObject * item = PyList_GetItem(self->var_value_cells[src], 0); Py_DECREF(rval);
Py_INCREF(item); rval = PyList_New(self->n_output_vars);
PyList_SetItem(rval, i, item); for (int i = 0; i < (self->n_output_vars); ++i)
{
Py_ssize_t src = self->output_vars[i];
PyObject * item = PyList_GetItem(self->var_value_cells[src], 0);
Py_INCREF(item);
PyList_SetItem(rval, i, item);
}
} }
}
for (int i = 0; i < self->n_updates; ++i) for (int i = 0; i < self->n_updates; ++i)
{ {
Py_ssize_t dst = self->update_storage[2*i]; Py_ssize_t dst = self->update_storage[2*i];
Py_ssize_t src = self->update_storage[2*i+1]; Py_ssize_t src = self->update_storage[2*i+1];
PyObject* tmp = PyList_GetItem(self->var_value_cells[src], 0); PyObject* tmp = PyList_GetItem(self->var_value_cells[src], 0);
Py_INCREF(Py_None); Py_INCREF(tmp);
Py_INCREF(tmp); PyList_SetItem(self->var_value_cells[dst], 0, tmp);
PyList_SetItem(self->var_value_cells[dst], 0, tmp); }
PyList_SetItem(self->var_value_cells[src], 0, Py_None);
} }
} }
Py_DECREF(one); Py_DECREF(one);
...@@ -885,7 +886,7 @@ static PyTypeObject lazylinker_ext_CLazyLinkerType = { ...@@ -885,7 +886,7 @@ static PyTypeObject lazylinker_ext_CLazyLinkerType = {
static PyObject * get_version(PyObject *dummy, PyObject *args) static PyObject * get_version(PyObject *dummy, PyObject *args)
{ {
PyObject *result = PyFloat_FromDouble(0.11); PyObject *result = PyFloat_FromDouble(0.12);
return result; return result;
} }
......
...@@ -13,7 +13,7 @@ if config.compiledir not in sys.path: ...@@ -13,7 +13,7 @@ if config.compiledir not in sys.path:
sys.path.append(config.compiledir) sys.path.append(config.compiledir)
force_compile = False force_compile = False
version = 0.11 # must match constant returned in function get_version() version = 0.12 # must match constant returned in function get_version()
try: try:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论