Browse Source

Fix insert operation.

Handle case where move is unnecessary.
John 9 years ago
parent
commit
ca0372c415
1 changed files with 4 additions and 2 deletions
  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) {
 				int insertIndex = ii + 1;
 				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->updateCache[insertIndex] = transformConstraint;
 				internal->updateCacheType[insertIndex] = SP_UPDATE_TRANSFORM_CONSTRAINT;