From: José Fonseca Date: Thu, 5 Apr 2012 18:58:38 +0000 (+0100) Subject: Avoid conflicting tmps. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=68013c9a54f762dee40cf5bbd636b4c60827f70e;p=apitrace Avoid conflicting tmps. --- diff --git a/retrace.py b/retrace.py index b2d8f2f..f7a365d 100644 --- a/retrace.py +++ b/retrace.py @@ -84,17 +84,20 @@ class ValueDeserializer(stdapi.Visitor): allocated = False def visitArray(self, array, lvalue, rvalue): - print ' const trace::Array *__a%s = dynamic_cast(&%s);' % (array.tag, rvalue) - length = '__a%s->values.size()' % array.tag + tmp = '__a_' + array.tag + '_' + str(self.seq) + self.seq += 1 + + print ' const trace::Array *%s = dynamic_cast(&%s);' % (tmp, rvalue) + length = '%s->values.size()' % (tmp,) allocated = self.allocated if not allocated: - print ' if (__a%s) {' % (array.tag) + print ' if (%s) {' % (tmp,) print ' %s = _allocator.alloc<%s>(%s);' % (lvalue, array.type, length) self.allocated = True index = '__j' + array.tag print ' for (size_t {i} = 0; {i} < {length}; ++{i}) {{'.format(i = index, length = length) try: - self.visit(array.type, '%s[%s]' % (lvalue, index), '*__a%s->values[%s]' % (array.tag, index)) + self.visit(array.type, '%s[%s]' % (lvalue, index), '*%s->values[%s]' % (tmp, index)) finally: print ' }' if not allocated: @@ -103,14 +106,17 @@ class ValueDeserializer(stdapi.Visitor): print ' }' def visitPointer(self, pointer, lvalue, rvalue): - print ' const trace::Array *__a%s = dynamic_cast(&%s);' % (pointer.tag, rvalue) + tmp = '__a_' + pointer.tag + '_' + str(self.seq) + self.seq += 1 + + print ' const trace::Array *%s = dynamic_cast(&%s);' % (tmp, rvalue) allocated = self.allocated if not allocated: - print ' if (__a%s) {' % (pointer.tag) + print ' if (%s) {' % (tmp) print ' %s = _allocator.alloc<%s>();' % (lvalue, pointer.type) self.allocated = True try: - self.visit(pointer.type, '%s[0]' % (lvalue,), '*__a%s->values[0]' % (pointer.tag,)) + self.visit(pointer.type, '%s[0]' % (lvalue,), '*%s->values[0]' % (tmp,)) finally: if not allocated: print ' } else {'