浏览代码

fix bogus assert

David Rose 14 年之前
父节点
当前提交
8fd5dff01c
共有 2 个文件被更改,包括 7 次插入2 次删除
  1. 4 1
      panda/src/gobj/geomVertexReader.I
  2. 3 1
      panda/src/gobj/geomVertexWriter.I

+ 4 - 1
panda/src/gobj/geomVertexReader.I

@@ -607,7 +607,10 @@ quick_set_pointer(int row) {
   _pointer = _pointer_begin + _packer->_column->get_start() + _stride * row;
   _pointer = _pointer_begin + _packer->_column->get_start() + _stride * row;
 
 
 #if defined(_DEBUG)
 #if defined(_DEBUG)
-  nassertv(_pointer_begin == _pointer_end || _pointer < _pointer_end);
+  // We have to allow the pointer to exceed the end by up to one row's
+  // width.  This wouldn't be legal on a plain GeomVertexReader, but
+  // it *is* legal for a GeomVertexRewriter.
+  nassertv(_pointer_begin == _pointer_end || (_pointer - _packer->_column->get_start())  <= _pointer_end);
 #endif
 #endif
 }
 }
 
 

+ 3 - 1
panda/src/gobj/geomVertexWriter.I

@@ -860,7 +860,9 @@ quick_set_pointer(int row) {
   _pointer = _pointer_begin + _packer->_column->get_start() + _stride * row;
   _pointer = _pointer_begin + _packer->_column->get_start() + _stride * row;
 
 
 #if defined(_DEBUG)
 #if defined(_DEBUG)
-  nassertv(_pointer_begin == _pointer_end || _pointer <= _pointer_end);
+  // We have to allow the pointer to exceed the end by up to one row's
+  // width, because the next call might be to add_data_*().
+  nassertv(_pointer_begin == _pointer_end || (_pointer - _packer->_column->get_start())  <= _pointer_end);
 #endif
 #endif
 }
 }