Преглед изворни кода

Fix the inconsistent behavior between Spine vector's setSize and std::vector's resize, which causes the Spine vector to allocate additional space upfront. (#2830)

bofeng-song пре 4 месеци
родитељ
комит
7fd1e5340c
1 измењених фајлова са 5 додато и 1 уклоњено
  1. 5 1
      spine-cpp/spine-cpp/include/spine/Vector.h

+ 5 - 1
spine-cpp/spine-cpp/include/spine/Vector.h

@@ -77,7 +77,11 @@ namespace spine {
 			size_t oldSize = _size;
 			size_t oldSize = _size;
 			_size = newSize;
 			_size = newSize;
 			if (_capacity < newSize) {
 			if (_capacity < newSize) {
-				_capacity = (int) (_size * 1.75f);
+				if (_capacity == 0) {
+					_capacity = _size;
+				} else {
+					_capacity = (int) (_size * 1.75f);
+				}
 				if (_capacity < 8) _capacity = 8;
 				if (_capacity < 8) _capacity = 8;
 				_buffer = spine::SpineExtension::realloc<T>(_buffer, _capacity, __FILE__, __LINE__);
 				_buffer = spine::SpineExtension::realloc<T>(_buffer, _capacity, __FILE__, __LINE__);
 			}
 			}