瀏覽代碼

Fix insert operation.

Handle case where move is unnecessary.
John 9 年之前
父節點
當前提交
ca0372c415
共有 1 個文件被更改,包括 4 次插入2 次删除
  1. 4 2
      spine-c/src/spine/Skeleton.c

+ 4 - 2
spine-c/src/spine/Skeleton.c

@@ -169,8 +169,10 @@ void spSkeleton_updateCache (const spSkeleton* self) {
 			if (updatable == transformConstraint->bone || updatable == transformConstraint->target) {
 			if (updatable == transformConstraint->bone || updatable == transformConstraint->target) {
 				int insertIndex = ii + 1;
 				int insertIndex = ii + 1;
 				int moveCount = (capacity-2) - insertIndex;
 				int moveCount = (capacity-2) - insertIndex;
-				memmove(internal->updateCache + (insertIndex+1), internal->updateCache + insertIndex, moveCount * sizeof(void*));
-				memmove(internal->updateCacheType + (insertIndex+1), internal->updateCacheType + insertIndex, moveCount * sizeof(_spUpdateType));
+				if (moveCount > 0) {
+					memmove(internal->updateCache + (insertIndex + 1), internal->updateCache + insertIndex, moveCount * sizeof(void*));
+					memmove(internal->updateCacheType + (insertIndex + 1), internal->updateCacheType + insertIndex, moveCount * sizeof(_spUpdateType));
+				}
 				internal->updateCacheCount++;
 				internal->updateCacheCount++;
 				internal->updateCache[insertIndex] = transformConstraint;
 				internal->updateCache[insertIndex] = transformConstraint;
 				internal->updateCacheType[insertIndex] = SP_UPDATE_TRANSFORM_CONSTRAINT;
 				internal->updateCacheType[insertIndex] = SP_UPDATE_TRANSFORM_CONSTRAINT;