|
From: Andre R. <and...@us...> - 2004-12-17 13:07:05
|
Update of /cvsroot/frontierkernel/Frontier/Common/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31202/Common/source Modified Files: Tag: New_Tables_Experiment-branch arraylist.c Log Message: Fixed bug in unwraplist: When copying overlapping ranges of bytes, use memmove instead of memcpy. Index: arraylist.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/Attic/arraylist.c,v retrieving revision 1.1.2.8 retrieving revision 1.1.2.9 diff -C2 -d -r1.1.2.8 -r1.1.2.9 *** arraylist.c 4 Dec 2004 22:20:43 -0000 1.1.2.8 --- arraylist.c 17 Dec 2004 13:06:55 -0000 1.1.2.9 *************** *** 267,270 **** --- 267,272 ---- in one contiguous block, we will shift everything around to make it so. this is useful for when you want to run qsort from the C standard library. + + 2004-12-17 aradke: use memmove instead of memcpy if src and dest overlap. */ *************** *** 297,301 **** memcpy (*htemp, &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); ! memcpy (&((**hlist).item[lenhead]), &((**hlist).item[0]), lentail * sizeof(Handle)); memcpy (&((**hlist).item[0]), *htemp, lenhead * sizeof(Handle)); --- 299,303 ---- memcpy (*htemp, &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); ! memmove (&((**hlist).item[lenhead]), &((**hlist).item[0]), lentail * sizeof(Handle)); /*overlap!*/ memcpy (&((**hlist).item[0]), *htemp, lenhead * sizeof(Handle)); *************** *** 305,309 **** memcpy (*htemp, &((**hlist).item[0]), lentail * sizeof(Handle)); ! memcpy (&((**hlist).item[0]), &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); memcpy (&((**hlist).item[lenhead]), *htemp, lentail * sizeof(Handle)); --- 307,311 ---- memcpy (*htemp, &((**hlist).item[0]), lentail * sizeof(Handle)); ! memmove (&((**hlist).item[0]), &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); /*overlap!*/ memcpy (&((**hlist).item[lenhead]), *htemp, lentail * sizeof(Handle)); *************** *** 316,322 **** /*copy using free space in buffer*/ ! memcpy (&((**hlist).item[lenhead]), &((**hlist).item[0]), lentail * sizeof(Handle)); ! memcpy (&((**hlist).item[0]), &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); } --- 318,324 ---- /*copy using free space in buffer*/ ! memmove (&((**hlist).item[lenhead]), &((**hlist).item[0]), lentail * sizeof(Handle)); /*overlap!*/ ! memmove (&((**hlist).item[0]), &((**hlist).item[(**hlist).ix_offset]), lenhead * sizeof(Handle)); /*overlap!*/ } |