print ' %s *%s = _allocator.alloc<%s>(%s + 1);' % (elem_type, temp_name, elem_type, array_length)
print ' memset(%s, 0, %s * sizeof *%s);' % (temp_name, array_length, temp_name)
print ' %s[%s] = (%s)0xdeadc0de;' % (temp_name, array_length, elem_type)
- print ' %s(%s, %s);' % (inflection + self.suffix, ', '.join(args), temp_name)
+ print ' if (%s) {' % array_length
+ print ' %s(%s, %s);' % (inflection + self.suffix, ', '.join(args), temp_name)
+ print ' }'
# Simple buffer overflow detection
print ' assert(%s[%s] == (%s)0xdeadc0de);' % (temp_name, array_length, elem_type)
return temp_name
print 'namespace glstate {'
print
+ print 'static void'
+ print 'flushErrors(void) {'
+ print ' while (glGetError() != GL_NO_ERROR) {}'
+ print '}'
+ print
+
print 'void'
print 'dumpBoolean(JSONWriter &json, GLboolean value)'
print '{'
print ' // %s' % name
print ' {'
- print ' while (glGetError() != GL_NO_ERROR) {}'
+ print ' flushErrors();'
type, value = getter(*args)
print ' if (glGetError() != GL_NO_ERROR) {'
#print ' std::cerr << "warning: %s(%s) failed\\n";' % (inflection, name)
- print ' while (glGetError() != GL_NO_ERROR) {}'
+ print ' flushErrors();'
print ' } else {'
print ' json.beginMember("%s");' % name
JsonWriter().visit(type, value)