diff options
| -rw-r--r-- | miasm2/expression/expression.py | 10 | ||||
| -rw-r--r-- | miasm2/jitter/JitCore.c | 14 |
2 files changed, 17 insertions, 7 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index 5ceb17d6..1b9e0a91 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -391,7 +391,6 @@ class ExprInt(Expr): def __contains__(self, e): return self == e - @visit_chk def visit(self, cb, tv=None): return self @@ -501,7 +500,6 @@ class ExprAff(Expr): dst = property(lambda self: self._dst) src = property(lambda self: self._src) - def __str__(self): return "%s = %s" % (str(self._dst), str(self._src)) @@ -624,7 +622,7 @@ class ExprCond(Expr): src2 = self._src2.visit(cb, tv) if (cond == self._cond and src1 == self._src1 and - src2 == self._src2): + src2 == self._src2): return self return ExprCond(cond, src1, src2) @@ -793,11 +791,13 @@ class ExprOp(Expr): def __str__(self): if self.is_associative(): return '(' + self._op.join([str(arg) for arg in self._args]) + ')' + if (self._op.startswith('call_func_') or + len(self._args) > 2 or + self._op in ['parity', 'segm']): + return self._op + '(' + ', '.join([str(arg) for arg in self._args]) + ')' if len(self._args) == 2: return ('(' + str(self._args[0]) + ' ' + self.op + ' ' + str(self._args[1]) + ')') - elif len(self._args) > 2: - return self._op + '(' + ', '.join([str(arg) for arg in self._args]) + ')' else: return reduce(lambda x, y: x + ' ' + str(y), self._args, diff --git a/miasm2/jitter/JitCore.c b/miasm2/jitter/JitCore.c index 25134869..ac8a0624 100644 --- a/miasm2/jitter/JitCore.c +++ b/miasm2/jitter/JitCore.c @@ -24,7 +24,12 @@ PyObject * JitCpu_new(PyTypeObject *type, PyObject *args, PyObject *kwds) PyObject * JitCpu_get_vmmngr(JitCpu *self, void *closure) { - return self->pyvm; + if (self->pyvm) { + Py_INCREF(self->pyvm); + return self->pyvm; + } + Py_INCREF(Py_None); + return Py_None; } PyObject * JitCpu_set_vmmngr(JitCpu *self, PyObject *value, void *closure) @@ -35,7 +40,12 @@ PyObject * JitCpu_set_vmmngr(JitCpu *self, PyObject *value, void *closure) PyObject * JitCpu_get_jitter(JitCpu *self, void *closure) { - return self->jitter; + if (self->jitter) { + Py_INCREF(self->jitter); + return self->jitter; + } + Py_INCREF(Py_None); + return Py_None; } PyObject * JitCpu_set_jitter(JitCpu *self, PyObject *value, void *closure) |