Merge pull request #501 from antarespilot/dbvt_memmove_fix2
fix for broken memmove used in btDbvt.h, issue 347.
This commit is contained in:
@@ -1196,23 +1196,32 @@ inline void btDbvt::collideOCL( const btDbvtNode* root,
|
|||||||
|
|
||||||
//void * memmove ( void * destination, const void * source, size_t num );
|
//void * memmove ( void * destination, const void * source, size_t num );
|
||||||
|
|
||||||
//#if DBVT_USE_MEMMOVE
|
#if DBVT_USE_MEMMOVE
|
||||||
// memmove(&stack[j],&stack[j-1],sizeof(int)*(stack.size()-j-1));
|
{
|
||||||
//#else
|
int num_items_to_move = stack.size()-1-j;
|
||||||
for(int k=stack.size()-1;k>j;--k)
|
if(num_items_to_move > 0)
|
||||||
{
|
memmove(&stack[j+1],&stack[j],sizeof(int)*num_items_to_move);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
for(int k=stack.size()-1;k>j;--k) {
|
||||||
stack[k]=stack[k-1];
|
stack[k]=stack[k-1];
|
||||||
}
|
}
|
||||||
//#endif
|
#endif
|
||||||
stack[j]=allocate(ifree,stock,nes[q]);
|
stack[j]=allocate(ifree,stock,nes[q]);
|
||||||
/* Insert 1 */
|
/* Insert 1 */
|
||||||
j=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size());
|
j=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size());
|
||||||
stack.push_back(0);
|
stack.push_back(0);
|
||||||
//#if DBVT_USE_MEMMOVE
|
#if DBVT_USE_MEMMOVE
|
||||||
// memmove(&stack[j],&stack[j-1],sizeof(int)*(stack.size()-j-1));
|
{
|
||||||
//#else
|
int num_items_to_move = stack.size()-1-j;
|
||||||
for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1];
|
if(num_items_to_move > 0)
|
||||||
//#endif
|
memmove(&stack[j+1],&stack[j],sizeof(int)*num_items_to_move);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
for(int k=stack.size()-1;k>j;--k) {
|
||||||
|
stack[k]=stack[k-1];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
stack[j]=allocate(ifree,stock,nes[1-q]);
|
stack[j]=allocate(ifree,stock,nes[1-q]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user