-- 
Øyvind Harboe
http://www.zylin.com - eCos ARM & FPGA  developer kit
### Eclipse Workspace Patch 1.0
#P infra
Index: current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/ChangeLog,v
retrieving revision 1.59
diff -u -r1.59 ChangeLog
--- current/ChangeLog   28 Jun 2007 15:43:07 -0000      1.59
+++ current/ChangeLog   27 Dec 2007 13:54:36 -0000
@@ -1,3 +1,9 @@
+2007-12-28  Oyvind Harboe <[EMAIL PROTECTED]>
+       
+       * src/memcpy.cxx: added assert when memory areas for memcpy()
+       overlaps => result is undefined. It is important to catch *all*
+       cases of this if adding an optimisation for unaligned copy.
+       
 2007-06-28  Gary Thomas  <[EMAIL PROTECTED]>
 
        * src/tcdiag.cxx: 
Index: current/src/memcpy.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/infra/current/src/memcpy.c,v
retrieving revision 1.6
diff -u -r1.6 memcpy.c
--- current/src/memcpy.c        23 May 2002 23:05:52 -0000      1.6
+++ current/src/memcpy.c        27 Dec 2007 13:54:36 -0000
@@ -92,9 +92,12 @@
 void *
 _memcpy( void *s1, const void *s2, size_t n )
 {
-#if defined(CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMCPY) || 
defined(__OPTIMIZE_SIZE__)
     char *dst = (char *) s1;
     const char *src = (const char *) s2;
+    CYG_ASSERT((dst>=(src+n))||((dst+n)<=src),
+               "memcpy() has undefined result for overlapping copies");
+       
+#if defined(CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMCPY) || 
defined(__OPTIMIZE_SIZE__)
     
 #ifdef CYG_TRACING_FIXED
     CYG_REPORT_FUNCNAMETYPE( "_memcpy", "returning %08x" );
@@ -119,8 +122,6 @@
 #endif
     return s1;
 #else
-    char *dst;
-    const char *src;
     CYG_WORD *aligned_dst;
     const CYG_WORD *aligned_src;
     
@@ -128,8 +129,6 @@
     CYG_REPORT_FUNCNAMETYPE( "_memcpy", "returning %08x" );
 #endif
 
-    dst = (char *)s1;
-    src = (const char *)s2;
 
 #ifdef CYG_TRACING_FIXED
     CYG_REPORT_FUNCARG3( "dst=%08x, src=%08x, n=%d", dst, src, n );

Reply via email to