]> git.cworth.org Git - apitrace/commitdiff
Handle null arrays.
authorJosé Fonseca <jfonseca@vmware.com>
Sun, 21 Nov 2010 02:34:13 +0000 (02:34 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Sun, 21 Nov 2010 02:34:13 +0000 (02:34 +0000)
glretrace.py

index e6c3fb8109f7a5cc0c92a9d7c7e3cf049edebe11..e5675af2e743df8043ebbd215f3f7427df5234ec 100644 (file)
@@ -50,10 +50,15 @@ class ValueExtractor(base.Visitor):
         self.visit(bitmask.type, lvalue, rvalue)
 
     def visit_array(self, array, lvalue, rvalue):
-        print '    %s = new %s[%s];' % (lvalue, array.type, array.length)
+        print '    const Trace::Array *__a%s = dynamic_cast<const Trace::Array *>(&%s);' % (array.id, rvalue)
+        print '    if (__a%s) {' % (array.id)
+        print '        %s = new %s[%s];' % (lvalue, array.type, array.length)
         index = '__i' + array.id
-        print '    for(size_t {i} = 0; {i} < {length}; ++{i}) {{'.format(i = index, length = array.length)
-        self.visit(array.type, '%s[%s]' % (lvalue, index), '%s[%s]' % (rvalue, index))
+        print '        for(size_t {i} = 0; {i} < {length}; ++{i}) {{'.format(i = index, length = array.length)
+        self.visit(array.type, '%s[%s]' % (lvalue, index), '*__a%s->values[%s]' % (array.id, index))
+        print '        }'
+        print '    } else {'
+        print '        %s = NULL;' % lvalue
         print '    }'
 
     def visit_blob(self, blob, lvalue, rvalue):