diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-09-13 05:52:58 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-09-13 05:52:58 +0400 |
commit | ab48f2108bc8ff1dfcc34e2f395debac97be7826 (patch) | |
tree | 61cfadffe9a608647265528c9b047bf4d485915e | |
parent | 4cb6d5d214529749bbeeb2a63018b2d54ffa3417 (diff) |
- cmake macro list_insert_after/list_insert_before now error when the item passed is not found in the list.
- BKE_pose_copy_data() check for target pointer is no longer valid and infact comparing against un-initialized memory in some cases.
-rw-r--r-- | build_files/cmake/macros.cmake | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/action.c | 8 |
2 files changed, 9 insertions, 9 deletions
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 97ce84142e9..317fcf0f120 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -27,7 +27,10 @@ macro(list_insert_after list_id item_check item_add ) set(_index) - list(FIND ${list_id} "${item_check}" _index) + list(FIND "${list_id}" "${item_check}" _index) + if("${_index}" MATCHES "-1") + message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") + endif() math(EXPR _index "${_index} + 1") list(INSERT ${list_id} "${_index}" ${item_add}) unset(_index) @@ -37,7 +40,10 @@ macro(list_insert_before list_id item_check item_add ) set(_index) - list(FIND ${list_id} "${item_check}" _index) + list(FIND "${list_id}" "${item_check}" _index) + if("${_index}" MATCHES "-1") + message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") + endif() list(INSERT ${list_id} "${_index}" ${item_add}) unset(_index) endmacro() diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 3e5dff74f3b..06bf5211abb 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -526,18 +526,12 @@ void BKE_pose_copy_data(bPose **dst, bPose *src, int copycon) bPose *outPose; bPoseChannel *pchan; ListBase listb; - + if (!src) { *dst = NULL; return; } - if (*dst == src) { - printf("BKE_pose_copy_data source and target are the same\n"); - *dst = NULL; - return; - } - outPose = MEM_callocN(sizeof(bPose), "pose"); BLI_duplicatelist(&outPose->chanbase, &src->chanbase); |